COMPILATION LISTING OF SEGMENT as_vip7760_mpx_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/20/88 1018.6 mst Wed 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 /* AS_VIP7760_MPX_ - Anserwing service piece of vip7760 multiplexer */ 12 13 /* Written October 1978 by Larry Johnson (as as_user1_mpx_) */ 14 /* Converted to as_vip7760_mpx_ 1/5/78 by J. Stern */ 15 /* Modified 5/1/79 by J. Stern to add vip7760_cv_cmf entry */ 16 /* Modified June 1981 by T. Casey for MR9.0 for new wakeup priorities. */ 17 /* Modified August 1982 by Robert Coren for additional argument to multiplexer_mgr_$mpx_crashed. */ 18 19 /* format: style4,delnl,insnl */ 20 21 as_vip7760_mpx_: 22 proc; 23 24 /* Parameters */ 25 26 dcl arg_mpx_chan char (*); /* Name of the multiplexed channel */ 27 dcl arg_cdtp ptr; /* Address of the cdt */ 28 dcl arg_cdtep ptr; 29 dcl arg_chan_listp ptr; /* Pointer to a structure of channels to init */ 30 dcl arg_check_sw bit (1) aligned; /* Says whether or not to check configuration */ 31 dcl arg_event_infop ptr; 32 dcl arg_code fixed bin (35); 33 dcl arg_error_proc entry variable; 34 35 /* Automatic */ 36 37 dcl code fixed bin (35); 38 dcl mpx_chan char (32); 39 dcl chan_listp ptr; 40 dcl event_infop ptr; 41 dcl ev_msg_array (2) bit (36); 42 dcl load_parm char (32); 43 dcl 1 boot_info aligned like pv_load_info; 44 dcl len fixed bin; 45 dcl p ptr; 46 dcl station_addr fixed bin; 47 dcl (i, j) fixed bin; 48 dcl error_proc entry (fixed bin, fixed bin, char (*), char (*), char (*), char (*)) variable; 49 dcl temp_value fixed bin; 50 51 /* Constants */ 52 53 dcl name char (15) int static options (constant) init ("as_vip7760_mpx_"); 54 55 /* Static */ 56 57 dcl static_cdtp ptr int static init (null); /* Remember where cdt is */ 58 59 /* External */ 60 61 dcl hphcs_$tty_control entry (char (*), char (*), ptr, fixed bin (35)); 62 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 63 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 64 dcl ipc_$decl_ev_call_chn entry (fixed bin (71), entry, ptr, fixed bin, fixed bin (35)); 65 dcl sys_log_ entry options (variable); 66 dcl convert_ipc_code_ entry (fixed bin (35)); 67 dcl sys_log_$error_log entry options (variable); 68 dcl get_process_id_ entry returns (bit (36) aligned); 69 dcl ttt_info_$additional_info entry (char (*), char (512) varying, fixed bin (35)); 70 dcl multiplexer_mgr_$mpx_load_failed entry (char (*), fixed bin (35)); 71 dcl multiplexer_mgr_$mpx_loaded entry (char (*), fixed bin (35)); 72 dcl multiplexer_mgr_$mpx_crashed entry (char (*), bit (1) aligned, fixed bin (35)); 73 74 dcl error_table_$action_not_performed ext fixed bin (35); 75 76 dcl (addr, bin, low, rtrim, verify, null, string, substr, unspec, index, length) builtin; 77 78 /* Based */ 79 80 dcl 1 chan_list aligned based (chan_listp), /* List of cdte entries of channels to boot */ 81 2 count fixed bin, 82 2 cdte_ptr (0 refer (chan_list.count)) ptr unal; 83 84 dcl 1 event_info aligned based (event_infop), /* Event call argument structure */ 85 2 channel_id fixed bin (71), 86 2 message fixed bin (71), 87 2 sender_procid bit (36), 88 2 origin, 89 3 dev_signal bit (18) unal, 90 3 ring bit (18) unal, 91 2 data_ptr ptr; 92 93 /* Entry to load a multiplexer */ 94 95 vip7760_load: 96 entry (arg_mpx_chan, arg_cdtp, arg_cdtep, arg_chan_listp, arg_check_sw, arg_code); 97 98 mpx_chan = arg_mpx_chan; 99 cdtp, static_cdtp = arg_cdtp; 100 cdtep = arg_cdtep; 101 chan_listp = arg_chan_listp; 102 mpxep = addr (cdte.initial_command); 103 104 if cdte.event ^= 0 105 then call ipc_$delete_ev_chn (cdte.event, code); 106 call ipc_$create_ev_chn (cdte.event, code); 107 if code ^= 0 then do; 108 ev_chan_err: 109 call convert_ipc_code_ (code); 110 call sys_log_$error_log (1, code, name, "Creating event channel for multiplexer ^a", mpx_chan); 111 arg_code = error_table_$action_not_performed; 112 return; 113 end; 114 call ipc_$decl_ev_call_chn (cdte.event, vip7760_wakeup_handler, cdtep, MPX_LOAD_PRIO, code); 115 if code ^= 0 116 then go to ev_chan_err; 117 118 call get_boot_info; /* get bootload parameters */ 119 120 call hphcs_$tty_control (mpx_chan, "load_mpx", addr (boot_info), code); 121 if code ^= 0 then do; 122 arg_code = code; 123 return; 124 end; 125 126 arg_code = 0; 127 return; 128 129 /* Wakeup handler for wakeups on the bootload event channel */ 130 131 vip7760_wakeup_handler: 132 entry (arg_event_infop); 133 134 event_infop = arg_event_infop; 135 cdtp = static_cdtp; 136 cdtep = event_info.data_ptr; 137 mpxep = addr (cdte.initial_command); 138 139 if event_info.ring ^= "0"b 140 then /* If not ring-0 */ 141 if event_info.sender_procid ^= get_process_id_ () then do; 142 /* Trust only myself */ 143 string (ev_msg_array) = unspec (event_info.message); 144 call sys_log_ (1, "^a: Unexpected wakeup (^w ^w) from process ^w.", name, ev_msg_array, 145 event_info.sender_procid); 146 return; 147 end; 148 149 mpx_chan = cdte.name; 150 151 if event_info.message ^= PV_MPX_UP & event_info.message ^= PV_MPX_DOWN & event_info.message ^= PV_MPX_MASKED then do; 152 call sys_log_ (1, "^a: Wakeup for multiplexer ^a has invalid state code: ^d.", name, mpx_chan, 153 event_info.message); 154 return; 155 end; 156 call sys_log_ (1, "^a: ^[Load^;Crash^] signaled for multiplexer ^a.", name, (event_info.message = PV_MPX_UP), 157 mpx_chan); 158 159 if mpxe.state = MPX_BOOT then do; /* Now booting */ 160 if event_info.message = PV_MPX_DOWN 161 then /* Boot failed */ 162 call multiplexer_mgr_$mpx_load_failed (mpx_chan, code); 163 else call multiplexer_mgr_$mpx_loaded (mpx_chan, code); 164 return; 165 end; 166 167 else if mpxe.state = MPX_UP then do; /* Currently running ok */ 168 if event_info.message ^= PV_MPX_UP 169 then /* it crashed */ 170 call multiplexer_mgr_$mpx_crashed (mpx_chan, (event_info.message = PV_MPX_DOWN), code); 171 end; 172 return; 173 174 /* Entry to dump a multiplexer. */ 175 176 vip7760_dump: 177 entry (arg_mpx_chan, arg_cdtp, arg_cdtep, arg_code); 178 179 arg_code = 0; /* nothing to do really */ 180 return; 181 182 /* Entry called by cv_cmf to validate VIP7760 multiplexers */ 183 184 vip7760_cv_cmf: 185 entry (arg_cdtp, arg_cdtep, arg_mpx_chan, arg_chan_listp, arg_error_proc); 186 187 cdtp = arg_cdtp; 188 cdtep = arg_cdtep; 189 mpx_chan = arg_mpx_chan; 190 chan_listp = arg_chan_listp; 191 error_proc = arg_error_proc; 192 193 /* Make sure this channel is not an FNP */ 194 195 if index (mpx_chan, ".") = 0 /* single component name => FNP */ 196 then call error_proc (1, 2, "A VIP7760 multiplexer cannot be configured as an FNP. ^a", "^a", mpx_chan, ""); 197 198 /* Make sure line type is right */ 199 200 if cdte.line_type ^= LINE_POLLED_VIP 201 then call error_proc (2, 2, "A VIP7760 multiplexer must have a line type of POLLED_VIP. ^a", "^a", mpx_chan, 202 ""); 203 204 /* Validate subchannel names */ 205 206 if chan_list.count > 32 207 then call error_proc (3, 2, "More than 32 subchannels specified for VIP7760 multiplexer ^a.", "^a", mpx_chan, 208 ""); 209 210 j = length (rtrim (cdte.name)) + 1; /* get length of major channel name */ 211 do i = 1 to chan_list.count; /* examine subchans */ 212 p = chan_list.cdte_ptr (i); 213 len = length (rtrim (p -> cdte.name)) - j; 214 if len < 3 /* name too short */ 215 then do; 216 bad_name: 217 call error_proc (4, 2, "Invalid subchannel name ^a for VIP7760 multiplexer ^a.", "^a for ^a", 218 substr (p -> cdte.name, j + 1), mpx_chan); 219 go to next_subchan; 220 end; 221 if len > 3 /* name too long, better be more components */ 222 then if substr (p -> cdte.name, j + 4, 1) ^= "." 223 /* nope, bad name */ 224 then go to bad_name; 225 226 if verify (substr (p -> cdte.name, j + 1, 1), "dpx") ^= 0 227 then go to bad_name; 228 229 station_addr = bin (substr (p -> cdte.name, j + 2, 2)); 230 if station_addr < 0 | station_addr > 31 231 then go to bad_name; 232 next_subchan: 233 end; 234 235 return; 236 237 /* Subroutine to prepare info structure for "load_mpx" control order */ 238 239 get_boot_info: 240 proc; 241 242 dcl add_info char (512) varying; 243 dcl (i, j) fixed bin; 244 dcl p ptr; 245 dcl switch bit (1); 246 247 248 boot_info.ev_chan = cdte.event; 249 boot_info.pause_time = 1; /* default value */ 250 boot_info.max_text_len = 1024; /* default value */ 251 boot_info.max_message_len = 289; /* default value */ 252 string (boot_info.flags) = ""b; 253 boot_info.quit = "q"; /* default function code value recognized as a QUIT */ 254 boot_info.formfeed = "l"; /* default function code value recognized as FF */ 255 boot_info.pad1 (*) = 0; 256 257 /* get baud rates for printer subchannels */ 258 259 if chan_list.count > 32 then do; 260 call sys_log_ (1, "^a: More than 32 subchannels specified for multiplexer ^a. ^d", name, mpx_chan, 261 chan_list.count); 262 go to error_exit; 263 end; 264 265 boot_info.nchan = chan_list.count; 266 j = length (rtrim (cdte.name)) + 2; /* get index of subchan component name */ 267 do i = 1 to chan_list.count; 268 p = chan_list.cdte_ptr (i); 269 boot_info.devx (i) = p -> cdte.twx; 270 boot_info.slave (i) = (p -> cdte.service_type = SLAVE_SERVICE); 271 if substr (p -> cdte.name, j, 1) = "p" /* this is a printer subchan */ 272 then do; 273 if ^boot_info.slave (i) then do; 274 call sys_log_ (1, "Printer subchannel ^a of multiplexer ^a does not have slave service type.", 275 substr (p -> cdte.name, j), mpx_chan); 276 go to error_exit; 277 end; 278 if p -> cdte.baud_rate = 300 279 then boot_info.baud_rate (i) = 300; 280 else boot_info.baud_rate (i) = 1200; /* this is our default */ 281 end; 282 else boot_info.baud_rate (i) = 0; /* not interesting for displays */ 283 boot_info.pad2 (i, *) = 0; 284 end; 285 286 /* get bootload parameters kept in additional info field of terminal type */ 287 288 if cdte.initial_terminal_type = "" | cdte.initial_terminal_type = low (length (cdte.initial_terminal_type)) 289 then return; /* no terminal type, use defaults */ 290 291 call ttt_info_$additional_info (cdte.initial_terminal_type, add_info, code); 292 if code ^= 0 then do; 293 call sys_log_$error_log (1, code, name, 294 "Cannot get additional info from terminal type ^a for multiplexer ^a", cdte.initial_terminal_type, 295 mpx_chan); 296 go to error_exit; 297 end; 298 if length (add_info) = 0 299 then return; 300 301 /* check for switch-type parameters */ 302 303 if find_switch_parm ("controller_poll", switch) 304 then boot_info.controller_poll = switch; 305 306 if find_switch_parm ("crlf_echo", switch) 307 then boot_info.crlf_echo = switch; 308 309 if find_switch_parm ("omit_nl", switch) 310 then boot_info.omit_nl = switch; 311 312 if find_switch_parm ("omit_ff", switch) 313 then boot_info.omit_ff = switch; 314 315 if find_switch_parm ("gcos_break", switch) 316 then boot_info.gcos_break = switch; 317 318 if find_switch_parm ("etb_mode", switch) 319 then boot_info.etb_mode = switch; 320 321 /* check for pause time */ 322 323 if find_parm_value ("pause_time", temp_value) 324 then boot_info.pause_time = -temp_value; /* negative value means milliseconds */ 325 326 /* check for max text length */ 327 328 if find_parm_value ("max_text_len", temp_value) then do; 329 boot_info.max_text_len = temp_value; 330 if boot_info.max_text_len < 64 | boot_info.max_text_len > 1920 then do; 331 call sys_log_ (1, 332 "^a: Specified value for max_text_len in terminal type ^a for multiplexer ^a is outside allowed range of 64 to 1920. ^d" 333 , name, cdte.initial_terminal_type, mpx_chan, boot_info.max_text_len); 334 go to error_exit; 335 end; 336 end; 337 338 /* check for max message length */ 339 340 if find_parm_value ("max_message_len", temp_value) then do; 341 boot_info.max_message_len = temp_value; 342 if boot_info.max_message_len < 73 | boot_info.max_message_len > 1024 then do; 343 call sys_log_ (1, 344 "^a: Specified value for max_message_len in terminal type ^a for multiplexer ^a is outside allowed range of 73 to 1024. ^d" 345 , name, cdte.initial_terminal_type, mpx_chan, boot_info.max_message_len); 346 go to error_exit; 347 end; 348 end; 349 350 /* check for quit function code */ 351 352 i = index (add_info, "quit="); 353 if i > 0 then do; 354 load_parm = "quit function code"; 355 i = i + length ("quit="); 356 if i > length (add_info) 357 then go to bad_load_parm; 358 boot_info.quit = substr (add_info, i, 1); 359 end; 360 361 /* check for formfeed function code */ 362 363 i = index (add_info, "formfeed="); 364 if i > 0 then do; 365 load_parm = "formfeed function code"; 366 i = i + length ("formfeed="); 367 if i > length (add_info) 368 then go to bad_load_parm; 369 boot_info.formfeed = substr (add_info, i, 1); 370 end; 371 372 /* Subroutine to find a yes/no type parameter in the add_info string. */ 373 374 find_switch_parm: 375 proc (name, switch) returns (bit (1)); 376 377 dcl name char (*); /* name of parameter */ 378 dcl switch bit (1); /* ON for "yes" value, OFF for "no" */ 379 380 dcl i fixed bin; 381 382 383 i = index (add_info, name || "="); 384 if i = 0 /* no such parm */ 385 then return ("0"b); 386 387 load_parm = name; 388 i = i + length (name) + 1; 389 if i + 1 > length (add_info) 390 then go to bad_load_parm; 391 if substr (add_info, i, 2) = "no" 392 then switch = "0"b; 393 else do; 394 if i + 2 > length (add_info) 395 then go to bad_load_parm; 396 if substr (add_info, i, 3) = "yes" 397 then switch = "1"b; 398 else go to bad_load_parm; 399 end; 400 401 return ("1"b); 402 403 end; /* find_switch_parm */ 404 405 406 /* subroutine to find a parameter in the add_info string with a numeric value */ 407 408 find_parm_value: 409 procedure (name, value) returns (bit (1)); 410 411 dcl name char (*); 412 dcl value fixed bin; 413 414 i = index (add_info, name || "="); 415 if i > 0 then do; 416 load_parm = name; 417 i = i + length (name) + 1; 418 if i > length (add_info) 419 then go to bad_load_parm; 420 j = verify (substr (add_info, i), "0123456789"); 421 if j = 0 422 then j = length (add_info) + 1 - (i - 1); 423 if j <= 1 424 then go to bad_load_parm; 425 value = bin (substr (add_info, i, j - 1), 17); 426 return ("1"b); 427 end; 428 429 else return ("0"b); 430 end find_parm_value; 431 432 433 end; /* get_boot_info */ 434 435 436 bad_load_parm: 437 call sys_log_ (1, "^a: Invalid ^a specification in terminal type ^a for multiplexer ^a.", name, load_parm, 438 cdte.initial_terminal_type, mpx_chan); 439 error_exit: 440 arg_code = error_table_$action_not_performed; 441 return; 442 1 1 /* BEGIN INCLUDE FILE ... polled_vip_load_info.incl.pl1 */ 1 2 /* Created 12/21/78 by J. Stern */ 1 3 1 4 1 5 dcl pv_load_infop ptr; 1 6 1 7 dcl 1 pv_load_info aligned based (pv_load_infop), /* info for "load_mpx" control order */ 1 8 2 ev_chan fixed bin (71), /* event channel to signal load completion */ 1 9 2 pause_time fixed bin, /* poll cycle pause time (miliseconds) */ 1 10 2 max_text_len fixed bin, /* max data chars in output text message */ 1 11 2 function_codes, /* chars having special meanings as function codes */ 1 12 3 quit char (1) unal, 1 13 3 formfeed char (1) unal, 1 14 3 pad char (2) unal, 1 15 2 flags, 1 16 3 controller_poll bit (1) unal, /* ON if controller polling desired */ 1 17 3 crlf_echo bit (1) unal, /* ON to enable CRLF echoing */ 1 18 3 omit_nl bit (1) unal, /* ON to omit adding NL to received msgs */ 1 19 3 omit_ff bit (1) unal, /* ON to omit sending FF at top of page */ 1 20 3 gcos_break bit (1) unal, /* ON to accept $*$BRK as quit indication */ 1 21 3 etb_mode bit (1) unal, /* On to terminate partial messages with ETB */ 1 22 3 unused bit (30) unal, 1 23 2 max_message_len fixed bin, /* maximum input message size */ 1 24 2 pad1 (4) fixed bin, 1 25 2 nchan fixed bin, /* number of subchannels configured */ 1 26 2 subchans (32), 1 27 3 devx fixed bin (17) unal, /* device index */ 1 28 3 baud_rate fixed bin (17) unal, /* baud rate for printers only (300 or 1200) */ 1 29 3 flags, 1 30 4 slave bit (1) unal, /* ON for slave subchans */ 1 31 4 unused bit (35) unal, 1 32 3 pad2 (2) fixed bin; 1 33 1 34 1 35 /* Event message values for the bootload event channel. */ 1 36 1 37 dcl PV_MPX_UP fixed bin (71) int static options (constant) init (1); 1 38 dcl PV_MPX_DOWN fixed bin (71) int static options (constant) init (2); 1 39 dcl PV_MPX_MASKED fixed bin (71) int static options (constant) init (3); 1 40 1 41 1 42 /* END INCLUDE FILE ... polled_vip_load_info.incl.pl1 */ 443 444 2 1 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 2 2 2 3 /* format: style3,idind25,indcomtxt */ 2 4 2 5 /* Channel Definition Table. 2 6* This table lists all of the hardware channels (ports) connected 2 7* to the system, and maintains the attributes of each one. 2 8* 2 9* PG 741230 2 10* Modified by Mike Grady 5/6/76 to add FNP info. 2 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 2 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 2 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 2 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 2 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 2 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 2 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 2 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 2 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 2 20* Modified August 1982 by E. N. Kittlitz for check_acs. 2 21* Modified January 1983 by Keith Loepere for generic_destination. 2 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 2 23* Modified 831216 by E. N. Kittlitz for required_access_class. 2 24* Modified 84-04-01 by BIM to finish communications AIM: 2 25* access class ranges, 2 26* access_control flags. 2 27**/ 2 28 2 29 2 30 /****^ HISTORY COMMENTS: 2 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 2 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 2 33* Add support for answering service to use IOCBs when tty_ cannot be 2 34* used to service login channels. 2 35* END HISTORY COMMENTS */ 2 36 2 37 2 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 2 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 2 40 2 41 dcl (cdtp, cdtep, fnpep, mpxep) 2 42 ptr; 2 43 2 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 2 45 2 author like author_dcl.author, /* standard header */ 2 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 2 47 2 current_size fixed bin, /* number of last cdte. */ 2 48 2 version fixed bin, 2 49 2 freep fixed bin, /* chain of free cdte's */ 2 50 2 n_cdtes fixed bin, /* number of used cdte's */ 2 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 2 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 2 53 2 cpu_in_dialup fixed bin (71), /* .. */ 2 54 2 pf_in_dialup fixed bin, /* .. */ 2 55 2 pp_in_dialup fixed bin, /* .. */ 2 56 2 entries_to_dialup fixed bin, /* .. */ 2 57 2 flags, 2 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 2 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 2 60 3 mux_mgr_system_init 2 61 bit (1) unal, /* mux mgr has loaded top-levels */ 2 62 3 pad1 bit (33) unal, 2 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 2 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 2 65 2 threads aligned like channel_threads, 2 66 /* root of non-fnp-top-level-multiplexers */ 2 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 2 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 2 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 2 70 2 71 2 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 2 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 2 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 2 75 2 pad1 bit (36) aligned, 2 76 2 name char (32), /* ASCII name of channel */ 2 77 2 access_class (2) bit (72) aligned, /* access class range */ 2 78 2 comment char (48), /* printable message about channel */ 2 79 2 charge_type fixed bin (17) unal, /* billing group */ 2 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 2 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 2 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 2 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 2 84 2 pad2 bit (18) unaligned, 2 85 2 answerback char (8), /* answerback string expected */ 2 86 2 initial_terminal_type 2 87 char (32) unal, /* as specified in the CMF */ 2 88 2 mpx_data unal, /* data used only for multiplexed channels */ 2 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 2 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 2 91 2 flags, 2 92 ( 3 attributes, 2 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 2 94 4 audit_access_error 2 95 bit (1), /* ON means ck that person auth is inside access class range */ 2 96 /* this implies that the access_class describes a range of 2 97* legitimate user auths. */ 2 98 4 hardwired bit (1), /* ON means it is */ 2 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 2 100 4 dont_read_answerback 2 101 bit (1), /* ON means don't try to read answerback */ 2 102 4 pada bit (4), 2 103 3 access_control unaligned, /* As below */ 2 104 4 dial_out bit (1), /* dialing user must be on ACS */ 2 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 2 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 2 107 4 login bit (1), /* logging in user must be on acs */ 2 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 2 109 4 pado bit (3), 2 110 3 options, 2 111 4 execute_initial_command 2 112 bit (1), /* ON means to do it */ 2 113 4 attached_by_operator 2 114 bit (1), /* ON means temporary attachment. */ 2 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 2 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 2 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 2 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 2 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 2 120 4 generic_destination_present 2 121 bit (1), /* ON means that the initial_command field contains 2 122* a generic destination to match on dial_out or priv attach */ 2 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 2 124 4 pado bit (9) 2 125 ) unaligned, 2 126 2 initial_command char (64), /* pseudo first input line */ 2 127 /**** The following variables represent dynamic control info, and 2 128* are used mostly by dialup_ and asu_ */ 2 129 2 event fixed bin (71), /* event call channel for channel events */ 2 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 2 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 2 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 2 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 2 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 2 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 2 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 2 137 /* 0 = dialup_, 1 = mc_tty_ */ 2 138 3 save_arg bit (1) unal, /* -save login arg given */ 2 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 2 140 3 detach_after_hangup 2 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 2 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 2 143 3 hold_arg bit (1) unal, /* -hold arg given */ 2 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 2 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 2 146 3 current_access_class_valid 2 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 2 148 3 pad bit (7) unal, 2 149 2 twx fixed bin, /* channel device index */ 2 150 2 state fixed bin, /* channel state */ 2 151 2 tty_id_code char (4), /* channel id (answerback) */ 2 152 2 current_terminal_type 2 153 char (32) unal, /* most recently-set terminal type */ 2 154 2 process ptr unal, /* ptr to ATE owning this channel */ 2 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 2 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 2 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 2 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 2 159* We do not yet define multi-class connections, but we will someday. */ 2 160 2 disconnected_ate_index 2 161 fixed bin (17) unal, /* index of ate of disconnected process */ 2 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 2 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 2 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 2 165 2 pad3 bit (14) unaligned, 2 166 /**** The following variables are kept for metering purposes. */ 2 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 2 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 2 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 2 170 2 dialup_time fixed bin (71), /* time of present dialup */ 2 171 2 disconnected_proc_command 2 172 fixed bin (12) unsigned unal, 2 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 2 174 2 disconnected_proc_number 2 175 fixed bin (12) unsigned unal, 2 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 2 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 2 178 /* number of disconnected processes that user has */ 2 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 2 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 2 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 2 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 2 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 2 184 /**** had the space. */ 2 185 2 threads aligned like channel_threads, 2 186 /**** The use name is that of the user who gave the dial or slave ****/ 2 187 /**** preaccess request. ****/ 2 188 2 user_name unaligned, 2 189 3 person char (20) unaligned, 2 190 3 project char (9) unaligned, 2 191 3 pad char (3) unaligned, /* no tag */ 2 192 2 iocbp ptr unaligned; /* 104 words */ 2 193 2 194 2 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 2 196* overlays initial_command field for slave and autocall lines */ 2 197 2 198 2 199 2 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 2 201 /* These variables are filled in from the CMF */ 2 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 2 203 2 memory fixed bin, /* amount of memory on this FNP */ 2 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 2 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 2 206 2 service_type fixed bin, /* service type */ 2 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 2 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 2 209 /**** The following are used during system operation to remember the state of the FNP */ 2 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 2 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 2 212 2 mpxe like mpxe, /* standard multiplexer data */ 2 213 2 threads aligned like channel_threads, 2 214 /* same mpx threads as channel */ 2 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 2 216 2 217 /* This structure describes the data necessary to control a multiplexer. 2 218* For FNP's., a copy appears in the fnpe. For communications lines, it 2 219* overlays the initial_command field in the cdte. */ 2 220 2 221 dcl 1 mpxe based (mpxep) aligned, 2 222 2 state fixed bin, /* current state, up, down, loading */ 2 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 2 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 2 225 2 n_bootloads fixed bin, /* count of load attempts */ 2 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 2 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 2 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 2 229 2 time_load_start fixed bin (71), /* time current load started */ 2 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 2 231 2 flags unal, 2 232 3 go bit (1), /* start MPX after it loads */ 2 233 3 listening bit (1), /* listen has been done on subchannels */ 2 234 3 check bit (1), /* loaded with check option */ 2 235 3 retry_load bit (1), /* reload if load fails */ 2 236 3 pad1 bit (32), 2 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 2 238 2 239 /* These threads define the tree of multiplexers in the cdt. */ 2 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 2 241 /* by alpha sort order of the channel name. Daughter points to the */ 2 242 /* first child of this node, if any. Daughter count is the number */ 2 243 /* of children, as a consistency check. Mother is a back pointer to */ 2 244 /* the parent, present in all the children, not just the first. */ 2 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 2 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 2 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 2 248 2 249 dcl 1 channel_threads aligned based, 2 250 2 next_sister fixed bin unaligned, 2 251 2 prev_sister fixed bin unaligned, 2 252 2 daughter fixed bin unaligned, 2 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 2 254 2 pad bit (18) unaligned, 2 255 2 daughter_count fixed bin unaligned; 2 256 2 257 /* Values for cdte.service_type field */ 2 258 2 259 dcl ( 2 260 ANS_SERVICE init (1), /* login or dial */ 2 261 FTP_SERVICE init (2), /* file transfer service */ 2 262 MC_SERVICE init (3), /* message coordinator */ 2 263 SLAVE_SERVICE init (4), /* special channel */ 2 264 DIAL_SERVICE init (5), /* transient state */ 2 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 2 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 2 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 2 268 ) fixed bin internal static options (constant); 2 269 2 270 /* Values for service type in both cdte and fnpe */ 2 271 2 272 dcl ( 2 273 INACTIVE init (7), /* not to be used, even though configured */ 2 274 ACTIVE init (1) 2 275 ) /* for FNP only, configured and to be used */ 2 276 fixed bin internal static options (constant); 2 277 2 278 /* Value for both cdte.in_use and fnpe.state */ 2 279 2 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 2 281 /* was not configured at Multics bootload time */ 2 282 2 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 2 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 2 285 2 286 /* Value for cdte.in_use */ 2 287 2 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 2 289 /* channel deleted by CDT installation */ 2 290 2 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 2 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 2 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 2 294 2 295 2 296 /* Values for mpxe.state field */ 2 297 2 298 dcl ( 2 299 FNP_FREE init (0), /* this fnpe is not used */ 2 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 2 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 2 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 2 303 FNP_UP init (4) /* FNP is up and running fine */ 2 304 ) fixed bin internal static options (constant); 2 305 2 306 dcl ( 2 307 MPX_FREE init (0), /* this mpxe is not used */ 2 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 2 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 2 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 2 311 MPX_UP init (4) /* MPX is up and running fine */ 2 312 ) fixed bin internal static options (constant); 2 313 3 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 3 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 3 8* Add data needed for the uncp multiplexer (DSA gateway) interface 3 9* implementation. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /* Values for fnpe.type field */ 3 14 /* 3 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 3 16* Added in March 1982 - DN7100.fd. 3 17**/ 3 18 3 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 3 20 DN6600 init (2), /* a DataNet 6600 FNP */ 3 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 3 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 3 23 ) fixed bin internal static options (constant); 3 24 3 25 dcl fnp_types (4) char (8) int static options (constant) 3 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 3 27 3 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 3 29 init (355, 6600, 6670, 7100); 3 30 3 31 dcl supported_fnp (4) bit (1) int static options (constant) 3 32 init ("0"b, "0"b, "1"b, "1"b); 3 33 3 34 3 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 2 314 2 315 2 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 445 446 4 1 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 4 2 4 3 /* This include file declares the "author" substructure 4 4* in a form suitable for using the PL/I "like" attribute. 4 5* 4 6* Written 750304 by PG 4 7**/ 4 8 4 9 dcl 1 author_dcl aligned based, 5 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 5 2 5 3 /* the "author" items must always be the first ones in the table. The 5 4* module which moves the converted table to the System Control process 5 5* fills in these data items and assumes them to be at the head of the segment 5 6* regardless of the specific table's actual declaration. The variables 5 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 5 8* respectively. For tables installed in multiple processes, these 5 9* are to be used to lock out multiple installations. */ 5 10 5 11 /* Lock should be used as a modification lock. Since, in general, 5 12* entries may not be moved in system tables, even by installations, 5 13* it is sufficient for only installers and programs that change threads 5 14* to set or respect the lock. Simply updating data in an entry 5 15* requires no such protection. 5 16* 5 17* Last_install_time is used by readers of system tables to detect 5 18* installations or other serious modifications. By checking it before 5 19* and after copying a block of data, they can be protected against 5 20* modifications. 5 21* 5 22* Modules that set the lock should save proc_group_id, and then 5 23* put their group id there for the time they hold the lock. 5 24* if they do not actually install the, they should restore the group id. 5 25**/ 5 26 5 27 2 author aligned, /* validation data about table's author */ 5 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 5 29 3 lock bit (36), /* installation lock */ 5 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 5 31 3 update_authorization bit (1) unal, /* update only authorizations */ 5 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 5 33 3 pad bit (33) unaligned, 5 34 3 last_install_time fixed bin (71), 5 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 5 36 3 w_dir char (64), /* author's working directory */ 5 37 5 38 /* END INCLUDE FILE author.incl.pl1 */ 4 10 4 11 2 pad; 4 12 4 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 447 448 6 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 6 2 6 3 /* Written November 10 1975 by Paul Green */ 6 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 6 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 6 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 6 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 6 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 6 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 6 10 6 11 6 12 /****^ HISTORY COMMENTS: 6 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 6 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 15* Add a DSA line type. 6 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 6 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 18* Add HASP_OPR to identify HASP workstation consoles with login service. 6 19* END HISTORY COMMENTS */ 6 20 6 21 6 22 declare (LINE_MC initial (-2), 6 23 LINE_TELNET initial (-1), 6 24 LINE_UNKNOWN initial (0), 6 25 LINE_ASCII initial (1), 6 26 LINE_1050 initial (2), 6 27 LINE_2741 initial (3), 6 28 LINE_ARDS initial (4), 6 29 LINE_SYNCH initial (5), 6 30 LINE_G115 initial (6), 6 31 LINE_BSC initial (7), 6 32 LINE_ETX initial (8), 6 33 LINE_VIP initial (9), 6 34 LINE_ASYNC1 initial (10), 6 35 LINE_ASYNC2 initial (11), 6 36 LINE_ASYNC3 initial (12), 6 37 LINE_SYNC1 initial (13), 6 38 LINE_SYNC2 initial (14), 6 39 LINE_SYNC3 initial (15), 6 40 LINE_POLLED_VIP initial (16), 6 41 LINE_X25LAP initial (17), 6 42 LINE_HDLC initial (18), 6 43 LINE_COLTS initial (19), 6 44 LINE_DSA initial (20), 6 45 LINE_HASP_OPR initial (21) 6 46 ) fixed bin internal static options (constant); 6 47 6 48 dcl max_line_type fixed bin int static options (constant) init (21); 6 49 6 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 6 51 6 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 6 53 6 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 6 55 "MC", /* -2 */ 6 56 "TELNET", /* -1 */ 6 57 "none", /* 0 */ 6 58 "ASCII", /* 1 */ 6 59 "1050", /* 2 */ 6 60 "2741", /* 3 */ 6 61 "ARDS", /* 4 */ 6 62 "Sync", /* 5 */ 6 63 "G115", /* 6 */ 6 64 "BSC", /* 7 */ 6 65 "202ETX", /* 8 */ 6 66 "VIP", /* 9 */ 6 67 "ASYNC1", /* 10 */ 6 68 "ASYNC2", /* 11 */ 6 69 "ASYNC3", /* 12 */ 6 70 "SYNC1", /* 13 */ 6 71 "SYNC2", /* 14 */ 6 72 "SYNC3", /* 15 */ 6 73 "POLLED_VIP", /* 16 */ 6 74 "X25LAP", /* 17 */ 6 75 "HDLC", /* 18 */ 6 76 "COLTS", /* 19 */ 6 77 "DSA", /* 20 */ 6 78 "HASP_OPR"); /* 21 */ 6 79 6 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 449 450 7 1 /* BEGIN INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 7 2 7 3 /* This include file defines the priorities of all of the event channels used by the answering service. 7 4* 7 5* They are declared as named constants. They are used in calls to ipc_$decl_ev_call_chn. 7 6* The names correspond to the functions of the event call handlers. 7 7* For brevity in names, MC means message coordinator, and LOGIN includes logout as well. 7 8* 7 9* The comment on each constant lists the procedure(s) that use it to set event channel priorities. 7 10* See the code in those procedures for information on the handlers themselves 7 11* (which are entry variables in some cases, and thus could not be documented in this file). 7 12* 7 13* The priorities range from zero (highest) to 22 (lowest used by the answering service). 7 14* 7 15* The event wait channel on which the A.S. goes blocked awaiting input on the initializer console has highest 7 16* of all priorities, set by as_init_ calling ipc_$set_wait_prior. 7 17* 7 18* Written June 1981 by T. Casey for MR9.0 7 19* Modified 1984-10-15 BIM for sac -> as_request. 7 20* as_request is above login, since sac is important and 7 21* dial requests for already logged in users can take 7 22* first dibs over new logins. 7 23**/ 7 24 7 25 dcl MC_PRIO fixed bin int static options (constant) init (1); /* mc_commands_, mc_con_rec_, mc_util_, mrd_tester */ 7 26 dcl SYSERR_COPY_PRIO fixed bin int static options (constant) init (2); /* syserr_log_man_ */ 7 27 dcl SHUTDOWN_PRIO fixed bin int static options (constant) init (3); /* admin */ 7 28 dcl ACCT_UPDATE_PRIO fixed bin int static options (constant) init (4); /* act_ctl_ */ 7 29 dcl DAEMON_LOGIN_PRIO fixed bin int static options (constant) init (8); /* daemon_user_manager_ */ 7 30 dcl AS_REQUEST_PRIO fixed bin int static options (constant) init (7); /* as_request_ */ 7 31 dcl INSTALL_PRIO fixed bin int static options (constant) init (8); /* up_sysctl_ */ 7 32 dcl INT_LOGIN_PRIO fixed bin int static options (constant) init (8); /* asu_, dialup_, ftp_dialup_ */ 7 33 dcl MPX_LOAD_PRIO fixed bin int static options (constant) init (11); 7 34 /* as_vip7760_mpx_, as_mcs_mpx_, as_ibm3270_mpx_, as_hasp_mpx_ */ 7 35 dcl ABS_DEFER_PRIO fixed bin int static options (constant) init (19); /* absentee_utility_ */ 7 36 dcl ABS_LOGIN_PRIO fixed bin int static options (constant) init (20); /* abentee_user_manager_ */ 7 37 dcl CORE_FLUSH_PRIO fixed bin int static options (constant) init (22); /* as_meter_ */ 7 38 7 39 /* END INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 451 452 453 end; /* as_vip7760_mpx_ */ SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1536.9 as_vip7760_mpx_.pl1 >special_ldd>install>MR12.2-1061>as_vip7760_mpx_.pl1 443 1 10/20/82 0938.6 polled_vip_load_info.incl.pl1 >ldd>include>polled_vip_load_info.incl.pl1 445 2 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 2-314 3 07/19/88 1524.1 fnp_types.incl.pl1 >special_ldd>install>MR12.2-1061>fnp_types.incl.pl1 447 4 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 4-10 5 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 449 6 08/06/87 0913.4 line_types.incl.pl1 >ldd>include>line_types.incl.pl1 451 7 01/21/85 0912.2 as_wakeup_priorities.incl.pl1 >ldd>include>as_wakeup_priorities.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. LINE_POLLED_VIP constant fixed bin(17,0) initial dcl 6-22 ref 200 MPX_BOOT constant fixed bin(17,0) initial dcl 2-306 ref 159 MPX_LOAD_PRIO 000000 constant fixed bin(17,0) initial dcl 7-33 set ref 114* MPX_UP constant fixed bin(17,0) initial dcl 2-306 ref 167 PV_MPX_DOWN 000004 constant fixed bin(71,0) initial dcl 1-38 ref 151 160 168 PV_MPX_MASKED 000002 constant fixed bin(71,0) initial dcl 1-39 ref 151 PV_MPX_UP 000006 constant fixed bin(71,0) initial dcl 1-37 ref 151 156 168 SLAVE_SERVICE constant fixed bin(17,0) initial dcl 2-259 ref 270 add_info 000412 automatic varying char(512) dcl 242 set ref 291* 298 352 356 358 363 367 369 383 389 391 394 396 414 418 420 421 425 addr builtin function dcl 76 ref 102 120 120 137 arg_cdtep parameter pointer dcl 28 ref 95 100 176 184 188 arg_cdtp parameter pointer dcl 27 ref 95 99 176 184 187 arg_chan_listp parameter pointer dcl 29 ref 95 101 184 190 arg_check_sw parameter bit(1) dcl 30 ref 95 arg_code parameter fixed bin(35,0) dcl 32 set ref 95 111* 122* 126* 176 179* 439* arg_error_proc parameter entry variable dcl 33 ref 184 191 arg_event_infop parameter pointer dcl 31 ref 131 134 arg_mpx_chan parameter char packed unaligned dcl 26 ref 95 98 176 184 189 author based structure level 2 dcl 4-9 author_dcl based structure level 1 dcl 4-9 baud_rate 33(18) based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 2-72 in procedure "as_vip7760_mpx_" ref 278 baud_rate 14(18) 000130 automatic fixed bin(17,0) array level 3 in structure "boot_info" packed packed unaligned dcl 43 in procedure "as_vip7760_mpx_" set ref 278* 280* 282* bin builtin function dcl 76 ref 229 425 boot_info 000130 automatic structure level 1 dcl 43 set ref 120 120 cdte based structure level 1 dcl 2-72 cdte_ptr 1 based pointer array level 2 packed packed unaligned dcl 80 ref 212 268 cdtep 000364 automatic pointer dcl 2-41 set ref 100* 102 104 104 106 114 114* 136* 137 149 188* 200 210 248 266 288 288 288 291 293 331 343 436 cdtp 000362 automatic pointer dcl 2-41 set ref 99* 135* 187* chan_list based structure level 1 dcl 80 chan_listp 000112 automatic pointer dcl 39 set ref 101* 190* 206 211 212 259 260 265 267 268 channel_threads based structure level 1 dcl 2-249 code 000100 automatic fixed bin(35,0) dcl 37 set ref 104* 106* 107 108* 110* 114* 115 120* 121 122 160* 163* 168* 291* 292 293* controller_poll 5 000130 automatic bit(1) level 3 packed packed unaligned dcl 43 set ref 303* convert_ipc_code_ 000024 constant entry external dcl 66 ref 108 count based fixed bin(17,0) level 2 dcl 80 set ref 206 211 259 260* 265 267 crlf_echo 5(01) 000130 automatic bit(1) level 3 packed packed unaligned dcl 43 set ref 306* data_ptr 6 based pointer level 2 dcl 84 ref 136 devx 14 000130 automatic fixed bin(17,0) array level 3 packed packed unaligned dcl 43 set ref 269* error_proc 000354 automatic entry variable dcl 48 set ref 191* 195 200 206 216 error_table_$action_not_performed 000042 external static fixed bin(35,0) dcl 74 ref 111 439 etb_mode 5(05) 000130 automatic bit(1) level 3 packed packed unaligned dcl 43 set ref 318* ev_chan 000130 automatic fixed bin(71,0) level 2 dcl 43 set ref 248* ev_msg_array 000116 automatic bit(36) array packed unaligned dcl 41 set ref 143* 144* event 72 based fixed bin(71,0) level 2 dcl 2-72 set ref 104 104* 106* 114* 248 event_info based structure level 1 dcl 84 event_infop 000114 automatic pointer dcl 40 set ref 134* 136 139 139 143 144 151 151 151 152 156 160 168 168 flags 15 000130 automatic structure array level 3 in structure "boot_info" dcl 43 in procedure "as_vip7760_mpx_" flags 5 000130 automatic structure level 2 in structure "boot_info" dcl 43 in procedure "as_vip7760_mpx_" set ref 252* fnpe based structure level 1 dcl 2-200 formfeed 4(09) 000130 automatic char(1) level 3 packed packed unaligned dcl 43 set ref 254* 369* function_codes 4 000130 automatic structure level 2 dcl 43 gcos_break 5(04) 000130 automatic bit(1) level 3 packed packed unaligned dcl 43 set ref 315* get_process_id_ 000030 constant entry external dcl 68 ref 139 hphcs_$tty_control 000012 constant entry external dcl 61 ref 120 i 000632 automatic fixed bin(17,0) dcl 380 in procedure "find_switch_parm" set ref 383* 384 388* 388 389 391 394 396 i 000351 automatic fixed bin(17,0) dcl 47 in procedure "as_vip7760_mpx_" set ref 211* 212* i 000613 automatic fixed bin(17,0) dcl 243 in procedure "get_boot_info" set ref 267* 268 269 270 273 278 280 282 283* 352* 353 355* 355 356 358 363* 364 366* 366 367 369 414* 415 417* 417 418 420 421 425 index builtin function dcl 76 ref 195 352 363 383 414 initial_command 51 based char(64) level 2 dcl 2-72 set ref 102 137 initial_terminal_type 37 based char(32) level 2 packed packed unaligned dcl 2-72 set ref 288 288 288 291* 293* 331* 343* 436* ipc_$create_ev_chn 000016 constant entry external dcl 63 ref 106 ipc_$decl_ev_call_chn 000020 constant entry external dcl 64 ref 114 ipc_$delete_ev_chn 000014 constant entry external dcl 62 ref 104 j 000614 automatic fixed bin(17,0) dcl 243 in procedure "get_boot_info" set ref 266* 271 274 274 420* 421 421* 423 425 j 000352 automatic fixed bin(17,0) dcl 47 in procedure "as_vip7760_mpx_" set ref 210* 213 216 216 221 226 229 len 000344 automatic fixed bin(17,0) dcl 44 set ref 213* 214 221 length builtin function dcl 76 ref 210 213 266 288 298 355 356 366 367 388 389 394 417 418 421 line_type 33 based fixed bin(17,0) level 2 packed packed unaligned dcl 2-72 ref 200 load_parm 000120 automatic char(32) packed unaligned dcl 42 set ref 354* 365* 387* 416* 436* low builtin function dcl 76 ref 288 max_message_len 6 000130 automatic fixed bin(17,0) level 2 dcl 43 set ref 251* 341* 342 342 343* max_text_len 3 000130 automatic fixed bin(17,0) level 2 dcl 43 set ref 250* 329* 330 330 331* message 2 based fixed bin(71,0) level 2 dcl 84 set ref 143 151 151 151 152* 156 160 168 168 mpx_chan 000101 automatic char(32) packed unaligned dcl 38 set ref 98* 110* 120* 149* 152* 156* 160* 163* 168* 189* 195 195* 200* 206* 216* 260* 274* 293* 331* 343* 436* mpxe based structure level 1 dcl 2-221 mpxep 000366 automatic pointer dcl 2-41 set ref 102* 137* 159 167 multiplexer_mgr_$mpx_crashed 000040 constant entry external dcl 72 ref 168 multiplexer_mgr_$mpx_load_failed 000034 constant entry external dcl 70 ref 160 multiplexer_mgr_$mpx_loaded 000036 constant entry external dcl 71 ref 163 name parameter char packed unaligned dcl 377 in procedure "find_switch_parm" ref 374 383 387 388 name 000010 constant char(15) initial packed unaligned dcl 53 in procedure "as_vip7760_mpx_" set ref 110* 144* 152* 156* 260* 293* 331* 343* 436* name 2 based char(32) level 2 in structure "cdte" dcl 2-72 in procedure "as_vip7760_mpx_" ref 149 210 213 216 216 221 226 229 266 271 274 274 name parameter char packed unaligned dcl 411 in procedure "find_parm_value" ref 408 414 416 417 nchan 13 000130 automatic fixed bin(17,0) level 2 dcl 43 set ref 265* omit_ff 5(03) 000130 automatic bit(1) level 3 packed packed unaligned dcl 43 set ref 312* omit_nl 5(02) 000130 automatic bit(1) level 3 packed packed unaligned dcl 43 set ref 309* origin 5 based structure level 2 dcl 84 p 000616 automatic pointer dcl 244 in procedure "get_boot_info" set ref 268* 269 270 271 274 274 278 p 000346 automatic pointer dcl 45 in procedure "as_vip7760_mpx_" set ref 212* 213 216 216 221 226 229 pad1 7 000130 automatic fixed bin(17,0) array level 2 dcl 43 set ref 255* pad2 16 000130 automatic fixed bin(17,0) array level 3 dcl 43 set ref 283* pause_time 2 000130 automatic fixed bin(17,0) level 2 dcl 43 set ref 249* 323* pv_load_info based structure level 1 dcl 1-7 quit 4 000130 automatic char(1) level 3 packed packed unaligned dcl 43 set ref 253* 358* ring 5(18) based bit(18) level 3 packed packed unaligned dcl 84 ref 139 rtrim builtin function dcl 76 ref 210 213 266 sender_procid 4 based bit(36) level 2 dcl 84 set ref 139 144* service_type 32(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 2-72 ref 270 slave 15 000130 automatic bit(1) array level 4 packed packed unaligned dcl 43 set ref 270* 273 state based fixed bin(17,0) level 2 dcl 2-221 ref 159 167 static_cdtp 000010 internal static pointer initial dcl 57 set ref 99* 135 station_addr 000350 automatic fixed bin(17,0) dcl 46 set ref 229* 230 230 string builtin function dcl 76 set ref 143* 252* subchans 14 000130 automatic structure array level 2 dcl 43 substr builtin function dcl 76 ref 216 216 221 226 229 271 274 274 358 369 391 396 420 425 switch parameter bit(1) packed unaligned dcl 378 in procedure "find_switch_parm" set ref 374 391* 396* switch 000620 automatic bit(1) packed unaligned dcl 245 in procedure "get_boot_info" set ref 303* 303 306* 306 309* 309 312* 312 315* 315 318* 318 sys_log_ 000022 constant entry external dcl 65 ref 144 152 156 260 274 331 343 436 sys_log_$error_log 000026 constant entry external dcl 67 ref 110 293 temp_value 000360 automatic fixed bin(17,0) dcl 49 set ref 323* 323 328* 329 340* 341 ttt_info_$additional_info 000032 constant entry external dcl 69 ref 291 twx 76 based fixed bin(17,0) level 2 dcl 2-72 ref 269 unspec builtin function dcl 76 ref 143 value parameter fixed bin(17,0) dcl 412 set ref 408 425* verify builtin function dcl 76 ref 226 420 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_DEFER_PRIO internal static fixed bin(17,0) initial dcl 7-35 ABS_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 7-36 ACCT_UPDATE_PRIO internal static fixed bin(17,0) initial dcl 7-28 ACTIVE internal static fixed bin(17,0) initial dcl 2-272 ANS_SERVICE internal static fixed bin(17,0) initial dcl 2-259 AS_REQUEST_PRIO internal static fixed bin(17,0) initial dcl 7-30 CDT_version internal static fixed bin(17,0) initial dcl 2-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 2-38 CHANNEL_DELETED internal static fixed bin(17,0) initial dcl 2-288 CORE_FLUSH_PRIO internal static fixed bin(17,0) initial dcl 7-37 DAEMON_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 7-29 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 2-259 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 2-259 DN355 internal static fixed bin(17,0) initial dcl 3-19 DN6600 internal static fixed bin(17,0) initial dcl 3-19 DN6670 internal static fixed bin(17,0) initial dcl 3-19 DN7100 internal static fixed bin(17,0) initial dcl 3-19 FNP_BOOT internal static fixed bin(17,0) initial dcl 2-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 2-298 FNP_FREE internal static fixed bin(17,0) initial dcl 2-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 2-298 FNP_UP internal static fixed bin(17,0) initial dcl 2-298 FTP_SERVICE internal static fixed bin(17,0) initial dcl 2-259 INACTIVE internal static fixed bin(17,0) initial dcl 2-272 INSTALL_PRIO internal static fixed bin(17,0) initial dcl 7-31 INT_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 7-32 LINE_1050 internal static fixed bin(17,0) initial dcl 6-22 LINE_2741 internal static fixed bin(17,0) initial dcl 6-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 6-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 6-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 6-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 6-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 6-22 LINE_BSC internal static fixed bin(17,0) initial dcl 6-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 6-22 LINE_DSA internal static fixed bin(17,0) initial dcl 6-22 LINE_ETX internal static fixed bin(17,0) initial dcl 6-22 LINE_G115 internal static fixed bin(17,0) initial dcl 6-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 6-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 6-22 LINE_MC internal static fixed bin(17,0) initial dcl 6-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 6-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 6-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 6-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 6-22 LINE_TELNET internal static fixed bin(17,0) initial dcl 6-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 6-22 LINE_VIP internal static fixed bin(17,0) initial dcl 6-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 6-22 MC_PRIO internal static fixed bin(17,0) initial dcl 7-25 MC_SERVICE internal static fixed bin(17,0) initial dcl 2-259 MPX_DOWN internal static fixed bin(17,0) initial dcl 2-306 MPX_FREE internal static fixed bin(17,0) initial dcl 2-306 MPX_SERVICE internal static fixed bin(17,0) initial dcl 2-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 2-306 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 2-280 SHUTDOWN_PRIO internal static fixed bin(17,0) initial dcl 7-27 SYSERR_COPY_PRIO internal static fixed bin(17,0) initial dcl 7-26 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 2-259 cdt based structure level 1 dcl 2-44 fnp_models internal static fixed bin(17,0) initial array dcl 3-28 fnp_types internal static char(8) initial array packed unaligned dcl 3-25 fnpep automatic pointer dcl 2-41 generic_destination based char(32) packed unaligned dcl 2-195 line_types internal static char(16) initial array packed unaligned dcl 6-54 max_line_type internal static fixed bin(17,0) initial dcl 6-48 n_sync_line_types internal static fixed bin(17,0) initial dcl 6-50 null builtin function dcl 76 pv_load_infop automatic pointer dcl 1-5 supported_fnp internal static bit(1) initial array packed unaligned dcl 3-31 sync_line_type internal static fixed bin(17,0) initial array dcl 6-52 NAMES DECLARED BY EXPLICIT CONTEXT. as_vip7760_mpx_ 000526 constant entry external dcl 21 bad_load_parm 002001 constant label dcl 436 ref 356 367 389 394 396 418 423 bad_name 001654 constant label dcl 216 ref 221 226 230 error_exit 002042 constant label dcl 439 ref 262 276 296 334 346 ev_chan_err 000636 constant label dcl 108 ref 115 find_parm_value 003131 constant entry internal dcl 408 ref 323 328 340 find_switch_parm 003017 constant entry internal dcl 374 ref 303 306 309 312 315 318 get_boot_info 002046 constant entry internal dcl 239 ref 118 next_subchan 001776 constant label dcl 232 ref 219 vip7760_cv_cmf 001347 constant entry external dcl 184 vip7760_dump 001317 constant entry external dcl 176 vip7760_load 000542 constant entry external dcl 95 vip7760_wakeup_handler 001000 constant entry external dcl 131 ref 114 114 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4102 4146 3644 4112 Length 4522 3644 44 340 235 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME as_vip7760_mpx_ 990 external procedure is an external procedure. get_boot_info internal procedure shares stack frame of external procedure as_vip7760_mpx_. find_switch_parm internal procedure shares stack frame of external procedure as_vip7760_mpx_. find_parm_value internal procedure shares stack frame of external procedure as_vip7760_mpx_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_cdtp as_vip7760_mpx_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME as_vip7760_mpx_ 000100 code as_vip7760_mpx_ 000101 mpx_chan as_vip7760_mpx_ 000112 chan_listp as_vip7760_mpx_ 000114 event_infop as_vip7760_mpx_ 000116 ev_msg_array as_vip7760_mpx_ 000120 load_parm as_vip7760_mpx_ 000130 boot_info as_vip7760_mpx_ 000344 len as_vip7760_mpx_ 000346 p as_vip7760_mpx_ 000350 station_addr as_vip7760_mpx_ 000351 i as_vip7760_mpx_ 000352 j as_vip7760_mpx_ 000354 error_proc as_vip7760_mpx_ 000360 temp_value as_vip7760_mpx_ 000362 cdtp as_vip7760_mpx_ 000364 cdtep as_vip7760_mpx_ 000366 mpxep as_vip7760_mpx_ 000412 add_info get_boot_info 000613 i get_boot_info 000614 j get_boot_info 000616 p get_boot_info 000620 switch get_boot_info 000632 i find_switch_parm THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp call_ent_var_desc call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry ext_entry_desc set_chars_eis index_chars_eis any_to_any_truncate_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_ipc_code_ get_process_id_ hphcs_$tty_control ipc_$create_ev_chn ipc_$decl_ev_call_chn ipc_$delete_ev_chn multiplexer_mgr_$mpx_crashed multiplexer_mgr_$mpx_load_failed multiplexer_mgr_$mpx_loaded sys_log_ sys_log_$error_log ttt_info_$additional_info THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 21 000525 95 000533 98 000563 99 000573 100 000577 101 000602 102 000606 104 000610 106 000622 107 000634 108 000636 110 000645 111 000703 112 000706 114 000707 115 000733 118 000735 120 000736 121 000767 122 000771 123 000772 126 000773 127 000774 131 000775 134 001005 135 001011 136 001014 137 001016 139 001020 143 001035 144 001040 146 001076 149 001077 151 001103 152 001113 154 001151 156 001152 159 001214 160 001217 163 001241 164 001256 167 001257 168 001261 172 001311 176 001312 179 001340 180 001341 184 001342 187 001366 188 001371 189 001374 190 001404 191 001410 195 001415 200 001472 206 001542 210 001611 211 001625 212 001635 213 001637 214 001652 216 001654 219 001735 221 001737 226 001745 229 001756 230 001773 232 001776 235 002000 436 002001 439 002042 441 002045 239 002046 248 002047 249 002052 250 002054 251 002056 252 002060 253 002061 254 002063 255 002065 259 002076 260 002101 262 002137 265 002140 266 002141 267 002155 268 002165 269 002167 270 002175 271 002205 273 002213 274 002220 276 002266 278 002270 280 002301 281 002304 282 002305 283 002310 284 002322 288 002324 291 002344 292 002365 293 002367 296 002431 298 002432 303 002435 306 002455 309 002475 312 002512 315 002527 318 002546 323 002563 328 002600 329 002612 330 002614 331 002620 334 002662 340 002663 341 002677 342 002701 343 002705 346 002747 352 002750 353 002757 354 002760 355 002763 356 002765 358 002770 363 002773 364 003002 365 003003 366 003006 367 003010 369 003013 433 003016 374 003017 383 003030 384 003054 387 003064 388 003070 389 003073 391 003076 394 003110 396 003114 401 003124 408 003131 414 003142 415 003166 416 003171 417 003175 418 003200 420 003202 421 003221 423 003226 425 003230 426 003242 429 003250 ----------------------------------------------------------- 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