COMPILATION LISTING OF SEGMENT as_hasp_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 1017.0 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 14 /* HASP multiplexer: This multiplexer processes most of the HASP RJE protocol in either host or workstation mode. 15* This multiplexer expects data from the user ring to be already compressed and converted to EBCDIC. 16* This procedure implements support of the multiplexer for the Answering Service and the cv_cmf command. 17**/ 18 19 /* Created: October 1979 by G. Palter */ 20 /* Modified: 5 November 1980 by G. Palter to allow infinite initial connection timeout (connect_timeout= none) (TR8034) */ 21 /* Modified: 16 April 1981 by G. Palter to add rts_mode and message documentation */ 22 /* Modified: 22 July 1981 by G. Palter to use proper IPC priority for multiplexer loads/crashes */ 23 /* Modified: 25 November 1981 by G. Palter to add max_device_input_records parameter */ 24 /* Modified August 1982 by Robert Coren for additional argument to multiplexer_mgr_$mpx_crashed. */ 25 26 /****^ HISTORY COMMENTS: 27* 1) change(86-05-13,GJohnson), approve(86-05-13,MCR7387), 28* audit(86-05-13,Martinson), install(86-05-14,MR12.0-1055): 29* Correct error message documentation. 30* 2) change(87-03-20,Beattie), approve(87-04-06,MCR7656), 31* audit(87-07-16,Parisek), install(87-08-04,MR12.1-1055): 32* Add support for login service on operator console subchannel. 33* END HISTORY COMMENTS */ 34 35 as_hasp_mpx_: 36 procedure (); 37 38 return; /* not an entry */ 39 40 41 /* Parameters */ 42 43 dcl P_mpx_channel_name character (*) parameter; /* name of the multiplexer's channel */ 44 45 dcl (P_cdtp, /* -> the CDT */ 46 P_cdtep, /* -> the CDT entry of the multiplexer */ 47 P_subchannel_list_ptr, /* -> list of sub-channels for this multiplexer */ 48 P_event_call_info_ptr) /* -> description of the event wakeup */ 49 pointer parameter; 50 51 dcl P_error entry (fixed binary, fixed binary, character (*), character (*), character (*), character (*)) 52 variable parameter; /* procedure to report errors for cv_cmf */ 53 54 dcl P_check_sw bit (1) aligned parameter; 55 dcl P_code fixed binary (35) parameter; 56 57 58 /* Remaining declarations */ 59 60 dcl 1 subchannel_list aligned based (subchannel_list_ptr), /* configured sub-channels */ 61 2 count fixed binary, 62 2 cdteps (0 refer (subchannel_list.count)) pointer unaligned; 63 dcl subchannel_list_ptr pointer; 64 65 dcl system_area area aligned based (system_area_ptr); 66 dcl system_area_ptr pointer; 67 68 dcl code fixed binary (35); 69 70 dcl (mpx_channel_name, load_parameter_name) character (32); 71 72 dcl start_subchannel_name_idx fixed binary; 73 dcl (found_console, 74 (found_readers, found_printers, found_punches) dimension (8)) bit (1) aligned; 75 76 dcl idx fixed binary; 77 dcl event_message_array (2) bit (36); 78 79 dcl saved_cdtp pointer internal static; /* saved for use by event call handler */ 80 81 dcl NAME character (32) static options (constant) initial ("as_hasp_mpx_"); 82 83 dcl error_table_$action_not_performed fixed binary (35) external; 84 85 dcl convert_ipc_code_ entry (fixed binary (35)); 86 dcl error entry (fixed binary, fixed binary, character (*), character (*), character (*), character (*)) variable; 87 dcl get_process_id_ entry () returns (bit (36) aligned); 88 dcl get_system_free_area_ entry () returns (pointer); 89 dcl hphcs_$tty_control entry (character (*), character (*), pointer, fixed binary (35)); 90 dcl ipc_$create_ev_chn entry (fixed binary (71), fixed binary (35)); 91 dcl ipc_$decl_ev_call_chn entry (fixed binary (71), entry, pointer, fixed binary, fixed binary (35)); 92 dcl ipc_$delete_ev_chn entry (fixed binary (71), fixed binary (35)); 93 dcl multiplexer_mgr_$mpx_crashed entry (character (*), bit (1) aligned, fixed binary (35)); 94 dcl (multiplexer_mgr_$mpx_load_failed, 95 multiplexer_mgr_$mpx_loaded) entry (character (*), fixed binary (35)); 96 dcl (sys_log_, sys_log_$error_log) entry () options (variable); 97 dcl ttt_info_$additional_info entry (character (*), character (512) varying, fixed binary (35)); 98 99 dcl (addr, binary, index, length, low, maxlength, null, rtrim, search, string, substr, unspec, verify) builtin; 100 101 /* Load a multiplexer */ 102 103 hasp_load: 104 entry (P_mpx_channel_name, P_cdtp, P_cdtep, P_subchannel_list_ptr, P_check_sw, P_code); 105 106 mpx_channel_name = P_mpx_channel_name; 107 cdtp, /* for references now */ 108 saved_cdtp = P_cdtp; /* need for wakeup handler later */ 109 cdtep = P_cdtep; 110 subchannel_list_ptr = P_subchannel_list_ptr; 111 P_code = 0; /* assume success */ 112 113 mpxep = addr (cdte.initial_command); /* -> multiplexer data in the CDT */ 114 system_area_ptr = get_system_free_area_ (); 115 hld_ptr = null (); /* haven't allocated bootload data yet */ 116 117 if cdte.event ^= 0 then 118 call ipc_$delete_ev_chn (cdte.event, (0)); /* flush old channel */ 119 120 call ipc_$create_ev_chn (cdte.event, code); 121 if code ^= 0 then do; 122 EVENT_CHANNEL_LOSS: call convert_ipc_code_ (code); 123 call sys_log_$error_log (SL_LOG, code, NAME, "Creating event channel for multiplexer ^a.", 124 mpx_channel_name); 125 P_code = error_table_$action_not_performed; 126 return; 127 end; 128 129 call ipc_$decl_ev_call_chn (cdte.event, hasp_wakeup_handler, cdtep, MPX_LOAD_PRIO, code); 130 if code ^= 0 then go to EVENT_CHANNEL_LOSS; 131 132 call prepare_load_data (); /* get bootload data from channel names and additional info */ 133 134 call hphcs_$tty_control (mpx_channel_name, "load_mpx", hld_ptr, code); 135 free hasp_load_data in (system_area); /* ring-0 copies all essential data */ 136 137 P_code = code; 138 139 return; 140 141 142 BAD_LOAD_PARAMETER: 143 call sys_log_ (SL_LOG, "^a: Invalid ^a specification in terminal type ^a for multiplexer ^a.", 144 NAME, load_parameter_name, cdte.initial_terminal_type, mpx_channel_name); 145 146 ABORT_LOAD: 147 if hld_ptr ^= null () then 148 free hasp_load_data in (system_area); /* flush it */ 149 150 P_code = error_table_$action_not_performed; 151 return; 152 153 /* Handle wakeups over the bootload event channel */ 154 155 hasp_wakeup_handler: 156 entry (P_event_call_info_ptr); 157 158 event_call_info_ptr = P_event_call_info_ptr; 159 160 cdtp = saved_cdtp; 161 cdtep = event_call_info.data_ptr; /* -> channel definition of the multiplexer */ 162 mpxep = addr (cdte.initial_command); 163 164 if (event_call_info.ring ^= 0) & (event_call_info.sender ^= get_process_id_ ()) then do; 165 /* not myself or ring-0, must be a lie */ 166 string (event_message_array) = unspec (event_call_info.message); 167 call sys_log_ (SL_LOG, "^a: Unexpected wakeup (^w ^w) from process ^w.", NAME, event_message_array, 168 event_call_info.sender); 169 return; 170 end; 171 172 mpx_channel_name = cdte.name; /* for other reference */ 173 174 if (event_call_info.message ^= HASP_MPX_UP) & (event_call_info.message ^= HASP_MPX_DOWN) & (event_call_info.message ^= HASP_MPX_MASKED) then do; 175 call sys_log_ (SL_LOG, "^a: Wakeup for multiplexer ^a has invalid state code ^d.", NAME, 176 mpx_channel_name, event_call_info.message); 177 return; 178 end; 179 180 call sys_log_ (SL_LOG, "^a: ^[Load^;Crash^] signalled for multiplexer ^a.", NAME, 181 (event_call_info.message = HASP_MPX_UP), mpx_channel_name); 182 183 if mpxe.state = MPX_BOOT then /* multiplexer is booting */ 184 if event_call_info.message = HASP_MPX_UP then 185 call multiplexer_mgr_$mpx_loaded (mpx_channel_name, code); 186 else call multiplexer_mgr_$mpx_load_failed (mpx_channel_name, code); 187 188 189 else if mpxe.state = MPX_UP then /* multiplexer is running */ 190 if event_call_info.message ^= HASP_MPX_UP then 191 call multiplexer_mgr_$mpx_crashed (mpx_channel_name, (event_call_info.message = HASP_MPX_DOWN), code); 192 193 return; 194 195 /* Dump a multiplexer */ 196 197 hasp_dump: 198 entry (P_mpx_channel_name, P_cdtp, P_cdtep, P_code); 199 200 P_code = 0; /* none yet implemented (and may never be either) */ 201 202 return; 203 204 /* Validate a HASP multiplexer: called from cv_cmf */ 205 206 hasp_cv_cmf: 207 entry (P_cdtp, P_cdtep, P_mpx_channel_name, P_subchannel_list_ptr, P_error); 208 209 cdtp = P_cdtp; 210 cdtep = P_cdtep; 211 mpx_channel_name = P_mpx_channel_name; 212 subchannel_list_ptr = P_subchannel_list_ptr; 213 error = P_error; /* error reporting procedure */ 214 215 216 /* Validate that the major channel is not a FNP and has a BISYNC line type */ 217 218 if index (mpx_channel_name, ".") = 0 then 219 call error (1, 2, "A HASP multiplexer cannot be configured as an FNP. ^a", "^a", mpx_channel_name, ""); 220 221 if cdte.line_type ^= LINE_BSC then 222 call error (2, 2, "A HASP multiplexer must have a line type of BSC. ^a", "^a", mpx_channel_name, ""); 223 224 225 /* Validate the names of the sub-channels */ 226 227 if subchannel_list.count > 17 then 228 call error (3, 2, "More than 17 subchannels specified for HASP multiplexer ^a.", "^a", 229 mpx_channel_name, ""); 230 231 start_subchannel_name_idx = length (rtrim (cdte.name)) + 2; 232 233 found_console = "0"b; /* haven't seen a console yet */ 234 found_readers (*), /* haven't found any devices yet either */ 235 found_printers (*), 236 found_punches (*) = ""b; 237 238 do idx = 1 to subchannel_list.count; 239 240 call parse_subchannel_name ("0"b, (subchannel_list.cdteps (idx)), (0), (0)); 241 NEXT_SUBCHANNEL: 242 end; 243 244 if ^found_console then /* must have an operator's console */ 245 call error (7, 2, "No operator's console configured for HASP multiplexer ^a.", "^a", mpx_channel_name, ""); 246 247 return; 248 249 /* Prepare the data structure for the "load_mpx" control order */ 250 251 prepare_load_data: 252 procedure (); 253 254 dcl additional_info_str character (512) varying; 255 dcl value character (32) varying; 256 dcl p pointer; 257 dcl idx fixed binary; 258 259 if subchannel_list.count > 17 then do; 260 call sys_log_ (SL_LOG, "^a: More than 17 subchannels specified for HASP multiplexer ^a (^d).", 261 NAME, mpx_channel_name, subchannel_list.count); 262 go to ABORT_LOAD; 263 end; 264 265 hasp_load_data_n_subchannels = subchannel_list.count; 266 267 allocate hasp_load_data in (system_area) set (hld_ptr); 268 /* sets hasp_load_data.n_subchannels */ 269 270 hasp_load_data.event_channel = cdte.event; 271 hasp_load_data.configuration_data = DEFAULT_HASP_CONFIGURATION_DATA; 272 273 274 /* Validate the sub-channel names: check for duplicate sub-channel names and determine each sub-channel's device type and 275* device number */ 276 277 start_subchannel_name_idx = length (rtrim (cdte.name)) + 2; 278 279 found_console = "0"b; /* haven't seen a console yet */ 280 found_readers (*), /* haven't found any devices yet either */ 281 found_printers (*), 282 found_punches (*) = ""b; 283 284 do idx = 1 to subchannel_list.count; 285 286 p = subchannel_list.cdteps (idx); 287 288 hasp_load_data.subchannels (idx).devx = p -> cdte.twx; 289 290 call parse_subchannel_name ("1"b, p, 291 hasp_load_data.subchannels (idx).device_type, hasp_load_data.subchannels (idx).device_number); 292 end; 293 294 295 /* Get configuration data from additional_info for the channel's terminal type (if any) */ 296 297 if (cdte.initial_terminal_type = "") | /* no terminal type: use default configuration data */ 298 (cdte.initial_terminal_type = low (length (cdte.initial_terminal_type))) then 299 return; 300 301 call ttt_info_$additional_info (cdte.initial_terminal_type, additional_info_str, code); 302 if code ^= 0 then do; 303 call sys_log_$error_log (SL_LOG, code, NAME, 304 "Cannot get additional info from terminal type ^a for multiplexer ^a.", 305 cdte.initial_terminal_type, mpx_channel_name); 306 go to ABORT_LOAD; 307 end; 308 309 if length (additional_info_str) = 0 then /* no information: use default */ 310 return; 311 312 if find_parameter ("type", value) then /* check type of other side: set multiplexer's type */ 313 if (value = "workstation") then 314 hasp_load_data.type = HASP_HOST; /* foreign side is the workstation */ 315 else if (value = "host") then 316 hasp_load_data.type = HASP_WORKSTATION; 317 else go to BAD_LOAD_PARAMETER; 318 319 call find_switch_parameter ("suspend_all_mode", hasp_load_data.suspend_all_mode); 320 321 call find_switch_parameter ("signon_mode", hasp_load_data.signon_mode); 322 323 call find_switch_parameter ("multileave_mode", hasp_load_data.multileave_mode); 324 325 call find_switch_parameter ("trace_mode", hasp_load_data.trace_mode); 326 327 if find_parameter ("rts_mode", value) then 328 if (value = "yes") then 329 hasp_load_data.rts_mode = "1"b; 330 else if (value = "no") then 331 hasp_load_data.rts_mode = "0"b; 332 else go to BAD_LOAD_PARAMETER; 333 else /* default setting depends on multiplexer's type ... */ 334 if (hasp_load_data.type = HASP_HOST) then 335 hasp_load_data.rts_mode = "0"b; /* ... host doesn't need to ask permission */ 336 else hasp_load_data.rts_mode = "1"b; /* ... but a workstation usually does */ 337 338 call find_numeric_parameter 339 ("block_size", hasp_load_data.max_block_size, HASP_MIN_MAX_BLOCK_SIZE, HASP_MAX_MAX_BLOCK_SIZE); 340 341 call find_numeric_or_none_parameter ("connect_timeout", hasp_load_data.ic_timeout, 1, 60, 0); 342 343 call find_numeric_parameter ("receive_timeout", hasp_load_data.receive_timeout, 1, 60); 344 345 call find_numeric_parameter ("transmit_timeout", hasp_load_data.transmit_timeout, 1, 60); 346 347 call find_numeric_parameter ("max_naks", hasp_load_data.max_naks, 5, 100); 348 349 call find_numeric_parameter ("max_device_input_records", hasp_load_data.max_device_input_records, 3, 30); 350 351 return; 352 353 /* Find the specified parameter in the additional_info_str and return it's value */ 354 355 find_parameter: procedure (P_parameter_name, P_parameter_value) returns (bit (1) aligned); 356 357 dcl P_parameter_name character (*) parameter; 358 dcl P_parameter_value character (*) varying parameter; 359 360 dcl (idx, jdx) fixed binary; 361 362 idx = index (additional_info_str, P_parameter_name || "="); 363 if idx = 0 then /* not specified */ 364 return ("0"b); 365 366 load_parameter_name = P_parameter_name; 367 368 idx = idx + length (P_parameter_name) + 1; /* past the parameter name, pick up value */ 369 if idx > length (additional_info_str) then 370 go to BAD_LOAD_PARAMETER; /* no parameter value */ 371 372 jdx = verify (substr (additional_info_str, idx), " "); 373 if jdx = 0 then /* white space only */ 374 go to BAD_LOAD_PARAMETER; 375 376 idx = idx + jdx - 1; /* skip the whitespace */ 377 378 jdx = search (substr (additional_info_str, idx), " ,"); 379 if jdx = 0 then /* rest of string */ 380 jdx = length (additional_info_str) - idx + 2; 381 if (jdx - 1) > maxlength (P_parameter_value) then 382 go to BAD_LOAD_PARAMETER; /* too long */ 383 384 P_parameter_value = substr (additional_info_str, idx, (jdx - 1)); 385 386 return ("1"b); /* got it */ 387 388 end find_parameter; 389 390 /* Find the specified switch parameter in additional_info_str: the value must be either "yes" or "no" */ 391 392 find_switch_parameter: 393 procedure (P_parameter_name, P_parameter); 394 395 dcl P_parameter_name character (*) parameter; 396 dcl P_parameter bit (1) unaligned parameter; 397 398 dcl value character (3) varying; 399 400 if find_parameter (P_parameter_name, value) then 401 /* if the parameter is there */ 402 if (value = "yes") then 403 P_parameter = "1"b; 404 405 else if (value = "no") then 406 P_parameter = "0"b; 407 408 else go to BAD_LOAD_PARAMETER; 409 410 return; 411 412 end find_switch_parameter; 413 414 /* Find the specified numeric parameter in additional_info_str and validate it */ 415 416 find_numeric_parameter: 417 procedure (P_parameter_name, P_parameter_value, P_parameter_min, P_parameter_max); 418 419 dcl P_parameter_name character (*) parameter; 420 dcl (P_parameter_value, P_parameter_min, P_parameter_max) fixed binary parameter; 421 422 dcl value character (12) varying; 423 dcl numeric_value fixed binary (35); 424 425 if find_parameter (P_parameter_name, value) then do; 426 /* if the parameter is there */ 427 if verify (value, "0123456789") ^= 0 then 428 go to BAD_LOAD_PARAMETER; /* non-numeric string */ 429 430 numeric_value = binary (value, 35, 0); 431 if (numeric_value < P_parameter_min) | (numeric_value > P_parameter_max) then 432 go to BAD_LOAD_PARAMETER; 433 434 P_parameter_value = numeric_value; /* a good value */ 435 end; 436 437 return; 438 439 end find_numeric_parameter; 440 441 442 443 /* Find the specified numeric parameter in additional_info_str and validate it: permit "none" as a special case */ 444 445 find_numeric_or_none_parameter: 446 procedure (P_parameter_name, P_parameter_value, P_parameter_min, P_parameter_max, P_none_parameter_value); 447 448 dcl P_parameter_name character (*) parameter; 449 dcl (P_parameter_value, P_parameter_min, P_parameter_max, P_none_parameter_value) fixed binary parameter; 450 451 dcl value character (12) varying; 452 dcl numeric_value fixed binary (35); 453 454 if find_parameter (P_parameter_name, value) then do; 455 /* if the parameter is there */ 456 if (value = "none") then do; 457 P_parameter_value = P_none_parameter_value; 458 return; /* "none" is not necessarily the same as default */ 459 end; 460 461 if verify (value, "0123456789") ^= 0 then 462 go to BAD_LOAD_PARAMETER; /* non-numeric string */ 463 464 numeric_value = binary (value, 35, 0); 465 if (numeric_value < P_parameter_min) | (numeric_value > P_parameter_max) then 466 go to BAD_LOAD_PARAMETER; 467 468 P_parameter_value = numeric_value; /* a good value */ 469 end; 470 471 return; 472 473 end find_numeric_or_none_parameter; 474 475 end prepare_load_data; 476 477 /* Parse a sub-channel name: validate that the channel name is legal and not a duplicate */ 478 479 parse_subchannel_name: 480 procedure (P_called_from_load, P_cdtep, P_subchannel_type, P_subchannel_number); 481 482 dcl P_called_from_load bit (1) aligned parameter; 483 dcl P_cdtep pointer parameter; 484 dcl (P_subchannel_type, P_subchannel_number) fixed binary; 485 486 dcl p pointer; 487 dcl name_part character (3) varying; 488 dcl number_part character (1) varying; 489 dcl (device_number, name_lth) fixed binary; 490 491 p = P_cdtep; 492 493 name_lth = length (rtrim (p -> cdte.name)) - start_subchannel_name_idx + 1; 494 if (name_lth < 3) | (name_lth > 4) then go to BAD_NAME; 495 496 name_part = substr (p -> cdte.name, start_subchannel_name_idx, 3); 497 498 if name_lth > 3 then /* seems to have a device number */ 499 number_part = substr (p -> cdte.name, (start_subchannel_name_idx + 3), (name_lth - 3)); 500 else number_part = ""; 501 502 if (name_part ^= "opr") & (name_part ^= "rdr") & (name_part ^= "prt") & (name_part ^= "pun") then 503 go to BAD_NAME; /* unknown device type */ 504 505 506 /* Determine device number */ 507 508 if (name_part = "opr") then /* the "operator's" console */ 509 if length (number_part) ^= 0 then /* can't have a number */ 510 go to BAD_NAME; 511 else device_number = 1; 512 513 else do; /* reader/printer/punch */ 514 if length (number_part) = 0 then /* must have device number */ 515 go to BAD_NAME; 516 if verify (number_part, "0123456789") ^= 0 then go to BAD_NAME; 517 device_number = binary (number_part, 17, 0); 518 if (device_number < 1) | (device_number > 8) then go to BAD_NAME; 519 end; 520 521 522 /* Determine device type and whether this is a duplicate */ 523 524 if (name_part = "opr") then 525 if found_console then go to DUPLICATE_NAME; 526 else do; 527 found_console = "1"b; 528 P_subchannel_type = HASP_CONSOLE; 529 end; 530 531 else if (name_part = "rdr") then 532 if found_readers (device_number) then go to DUPLICATE_NAME; 533 else do; 534 found_readers (device_number) = "1"b; 535 P_subchannel_type = HASP_READER; 536 end; 537 538 else if (name_part = "prt") then 539 if found_printers (device_number) then 540 go to DUPLICATE_NAME; 541 else if found_punches (9 - device_number) then 542 go to OVERLAPPING_PRINTERS_AND_PUNCHES; 543 else do; 544 found_printers (device_number) = "1"b; 545 P_subchannel_type = HASP_PRINTER; 546 end; 547 548 else if (name_part = "pun") then /* last possibility */ 549 if found_punches (device_number) then 550 go to DUPLICATE_NAME; 551 else if found_printers (9 - device_number) then 552 go to OVERLAPPING_PRINTERS_AND_PUNCHES; 553 else do; 554 found_punches (device_number) = "1"b; 555 P_subchannel_type = HASP_PUNCH; 556 end; 557 558 if P_subchannel_type ^= HASP_CONSOLE then do; 559 if (p -> cdte.service_type ^= SLAVE_SERVICE) then 560 go to NOT_SLAVE_SERVICE; 561 end; 562 else do; 563 if (p -> cdte.service_type ^= SLAVE_SERVICE & p -> cdte.service_type ^= ANS_SERVICE) then 564 go to NOT_SLAVE_OR_LOGIN_SERVICE; 565 566 if (p -> cdte.service_type = ANS_SERVICE) 567 then do; 568 if (p -> cdte.line_type ^= LINE_HASP_OPR) then 569 go to BAD_OPR_LINE_TYPE; 570 /* have to special case and use an IOCB */ 571 p -> cdte.use_iocb = "1"b; 572 end; 573 end; 574 575 P_subchannel_number = device_number; 576 577 return; 578 579 580 /* Error handlers */ 581 582 BAD_NAME: if P_called_from_load 583 then do; 584 call sys_log_ (SL_LOG, "^a: Invalid subchannel name ^a for HASP multiplexer ^a.", 585 NAME, (substr (p -> cdte.name, start_subchannel_name_idx)), mpx_channel_name); 586 go to ABORT_LOAD; 587 end; 588 else do; 589 call error (4, 2, "Invalid subchannel name ^a for HASP multiplexer ^a.", "^a for ^a", 590 (substr (p -> cdte.name, start_subchannel_name_idx)), mpx_channel_name); 591 go to NEXT_SUBCHANNEL; 592 end; 593 594 BAD_OPR_LINE_TYPE: 595 if P_called_from_load 596 then do; 597 call sys_log_ (SL_LOG, 598 "^a: Line type for hasp operator console on multiplexer ^a must be ""HASP_OPR"" when configured for login service.", 599 NAME, cdte.name); 600 go to ABORT_LOAD; 601 end; 602 else do; 603 call error (8, 2, 604 "Line type for hasp operator console on multiplexer ^a must be ""HASP_OPR"" when configured for login service.", 605 "^a", (cdte.name), ""); 606 go to NEXT_SUBCHANNEL; 607 end; 608 609 DUPLICATE_NAME: 610 if P_called_from_load 611 then do; 612 call sys_log_ (SL_LOG, "^a: Duplicate subchannel name ^a for HASP multiplexer ^a.", 613 NAME, (substr (p -> cdte.name, start_subchannel_name_idx)), mpx_channel_name); 614 go to ABORT_LOAD; 615 end; 616 else do; 617 call error (5, 2, "Duplicate subchannel name ^a for HASP multiplexer ^a.", "^a for ^a", 618 (substr (p -> cdte.name, start_subchannel_name_idx)), mpx_channel_name); 619 go to NEXT_SUBCHANNEL; 620 end; 621 622 NOT_SLAVE_SERVICE: 623 if P_called_from_load 624 then do; 625 call sys_log_ (SL_LOG, "^a: Subchannel ^a of multiplexer ^a does not have a slave service type.", 626 NAME, (substr (p -> cdte.name, start_subchannel_name_idx)), mpx_channel_name); 627 go to ABORT_LOAD; 628 end; 629 else do; 630 call error (9, 2, "Subchannel ^a of multiplexer ^a does not have a slave service type.", 631 "subchannel ^a of multiplexer ^a", 632 (substr (p -> cdte.name, start_subchannel_name_idx)), mpx_channel_name); 633 go to NEXT_SUBCHANNEL; 634 end; 635 636 NOT_SLAVE_OR_LOGIN_SERVICE: 637 if P_called_from_load 638 then do; 639 call sys_log_ (SL_LOG, "^a: Subchannel ^a of multiplexer ^a does not have a slave or login service type.", 640 NAME, (substr (p -> cdte.name, start_subchannel_name_idx)), mpx_channel_name); 641 go to ABORT_LOAD; 642 end; 643 else do; 644 call error (10, 2, "Subchannel ^a of multiplexer ^a does not have a slave or login service type.", 645 "subchannel ^a of mux ^a", 646 (substr (p -> cdte.name, start_subchannel_name_idx)), mpx_channel_name); 647 go to NEXT_SUBCHANNEL; 648 end; 649 650 OVERLAPPING_PRINTERS_AND_PUNCHES: 651 if P_called_from_load 652 then do; 653 call sys_log_ (SL_LOG, "^a: Too many printers and punches configured for HASP multiplexer ^a.", 654 NAME, mpx_channel_name); 655 go to ABORT_LOAD; 656 end; 657 else do; 658 call error (6, 2, "Too many printers and punches configured for HASP multiplexer ^a.", "^a", 659 mpx_channel_name, ""); 660 go to NEXT_SUBCHANNEL; 661 end; 662 663 end parse_subchannel_name; 664 1 1 /* BEGIN INCLUDE FILE ... hasp_load_data.incl.pl1 */ 1 2 /* Created: October 1979 by G. Palter */ 1 3 /* Modified: 16 April 1981 by G. Palter to add rts_mode */ 1 4 1 5 /* Data structure for "load_mpx" highly-privileged control order */ 1 6 1 7 dcl 1 hasp_load_data aligned based (hld_ptr), 1 8 2 event_channel fixed binary (71), /* event channel to signal loading, crashes, etc. */ 1 9 2 configuration_data like hasp_configuration_data, /* data which controls multiplexer (see below) */ 1 10 2 n_subchannels fixed binary, /* # of configured sub-channels */ 1 11 2 subchannels (hasp_load_data_n_subchannels refer (hasp_load_data.n_subchannels)), 1 12 3 devx fixed binary, /* device index of sub-channel for validating the load */ 1 13 3 device_type fixed binary, /* type of device -- console/printer/reader/punch */ 1 14 3 device_number fixed binary; /* if not console, the device's number (EG: printer 3) */ 1 15 1 16 dcl hasp_load_data_n_subchannels fixed binary; 1 17 dcl hld_ptr pointer; 1 18 1 19 1 20 /* Event messages for a HASP multiplexer bootload channel */ 1 21 1 22 dcl (HASP_MPX_UP initial (1), /* multiplexer has come up */ 1 23 HASP_MPX_DOWN initial (2), /* multiplexer has gone down */ 1 24 HASP_MPX_MASKED initial (3)) /* multiplexer channel was masked */ 1 25 fixed binary (71) static options (constant); 1 26 1 27 1 28 /* Multiplexer configuration data */ 1 29 1 30 dcl 1 hasp_configuration_data aligned based, 1 31 2 type fixed binary, /* type of multiplexer -- workstation/host */ 1 32 2 max_block_size fixed binary, /* maximum block size for transmission over the line */ 1 33 2 max_device_input_records fixed binary, /* maximum # of input records to be held for a device */ 1 34 2 max_device_output_records fixed binary, /* maximum # of output records to be held */ 1 35 2 ic_timeout fixed binary, /* # of seconds to wait for initial connection */ 1 36 2 receive_timeout fixed binary, /* # of seconds to wait before sending a NAK */ 1 37 2 transmit_timeout fixed binary, /* # of seconds to wait before sending ACK0 (workstation) */ 1 38 2 max_naks fixed binary, /* # of NAKs received/transmitted before line considered down */ 1 39 2 flags, 1 40 3 suspend_all_mode bit (1) unaligned, /* ON => multiplexer should disallow all input whenever a 1 41* single input device goes not ready */ 1 42 3 signon_mode bit (1) unaligned, /* ON => multiplexer must send/receive a SIGNON record before 1 43* allowing data transfer on other devices */ 1 44 3 multileave_mode bit (1) unaligned, /* ON => multiplexer may include records for several devices 1 45* in a single block */ 1 46 3 trace_mode bit (1) unaligned, /* ON => multiplexer should record input and output blocks via 1 47* MCS tracing mechansim */ 1 48 3 rts_mode bit (1) unaligned, /* ON => multiplexer must request permission from remote 1 49* host/workstation before transmitting new files */ 1 50 3 pad bit (31) unaligned; 1 51 1 52 dcl (HASP_WORKSTATION initial (0), /* multiplexer is a workstation */ 1 53 HASP_HOST initial (1)) /* multiplexer is a host */ 1 54 fixed binary static options (constant); 1 55 2 1 /* BEGIN INCLUDE FILE ... hasp_device_data.incl.pl1 */ 2 2 /* Created: November 1979 by G. Palter */ 2 3 2 4 /* HASP device types */ 2 5 2 6 dcl (HASP_CONSOLE initial (1), /* operator's console */ 2 7 HASP_READER initial (2), 2 8 HASP_PRINTER initial (3), 2 9 HASP_PUNCH initial (4)) 2 10 fixed binary static options (constant); 2 11 2 12 2 13 /* Name of each type of device as used by the remote I/O daemon software */ 2 14 2 15 dcl HASP_DEVICE_NAMES (4) character (32) static options (constant) initial ("teleprinter", "reader", "printer", "punch"); 2 16 2 17 2 18 /* Maximum record length for each type of device */ 2 19 2 20 dcl HASP_MAX_DEVICE_RECORD_LTHS (4) fixed binary (21) static options (constant) initial (80, 80, 132, 80); 2 21 2 22 /* END INCLUDE FILE ... hasp_device_data.incl.pl1 */ 1 56 1 57 1 58 dcl (HASP_MIN_MAX_BLOCK_SIZE initial (400), /* minimum block size allowed as maximum block size */ 1 59 HASP_MAX_MAX_BLOCK_SIZE initial (1017)) 1 60 fixed binary static options (constant); 1 61 1 62 1 63 /* Default values for HASP configuration */ 1 64 1 65 dcl 1 DEFAULT_HASP_CONFIGURATION_DATA aligned static options (constant), 1 66 2 type fixed binary initial (1), /* host */ 1 67 2 max_block_size fixed binary initial (400), 1 68 2 max_device_input_records fixed binary initial (6), 1 69 2 max_device_output_records fixed binary initial (6), 1 70 2 ic_timeout fixed binary initial (30), 1 71 2 receive_timeout fixed binary initial (3), 1 72 2 transmit_timeout fixed binary initial (2), 1 73 2 max_naks fixed binary initial (10), 1 74 2 flags, 1 75 3 suspend_all_mode bit (1) unaligned initial ("0"b), 1 76 3 signon_mode bit (1) unaligned initial ("0"b), 1 77 3 multileave_mode bit (1) unaligned initial ("1"b), 1 78 3 trace_mode bit (1) unaligned initial ("0"b), 1 79 3 rts_mode bit (1) unaligned initial ("0"b), 1 80 3 pad bit (31) unaligned initial (""b); 1 81 1 82 /* END INCLUDE FILE ... hasp_load_data.incl.pl1 */ 665 666 3 1 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 3 2 3 3 /* format: style3,idind25,indcomtxt */ 3 4 3 5 /* Channel Definition Table. 3 6* This table lists all of the hardware channels (ports) connected 3 7* to the system, and maintains the attributes of each one. 3 8* 3 9* PG 741230 3 10* Modified by Mike Grady 5/6/76 to add FNP info. 3 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 3 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 3 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 3 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 3 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 3 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 3 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 3 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 3 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 3 20* Modified August 1982 by E. N. Kittlitz for check_acs. 3 21* Modified January 1983 by Keith Loepere for generic_destination. 3 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 3 23* Modified 831216 by E. N. Kittlitz for required_access_class. 3 24* Modified 84-04-01 by BIM to finish communications AIM: 3 25* access class ranges, 3 26* access_control flags. 3 27**/ 3 28 3 29 3 30 /****^ HISTORY COMMENTS: 3 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 3 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 3 33* Add support for answering service to use IOCBs when tty_ cannot be 3 34* used to service login channels. 3 35* END HISTORY COMMENTS */ 3 36 3 37 3 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 3 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 3 40 3 41 dcl (cdtp, cdtep, fnpep, mpxep) 3 42 ptr; 3 43 3 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 3 45 2 author like author_dcl.author, /* standard header */ 3 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 3 47 2 current_size fixed bin, /* number of last cdte. */ 3 48 2 version fixed bin, 3 49 2 freep fixed bin, /* chain of free cdte's */ 3 50 2 n_cdtes fixed bin, /* number of used cdte's */ 3 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 3 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 3 53 2 cpu_in_dialup fixed bin (71), /* .. */ 3 54 2 pf_in_dialup fixed bin, /* .. */ 3 55 2 pp_in_dialup fixed bin, /* .. */ 3 56 2 entries_to_dialup fixed bin, /* .. */ 3 57 2 flags, 3 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 3 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 3 60 3 mux_mgr_system_init 3 61 bit (1) unal, /* mux mgr has loaded top-levels */ 3 62 3 pad1 bit (33) unal, 3 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 3 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 3 65 2 threads aligned like channel_threads, 3 66 /* root of non-fnp-top-level-multiplexers */ 3 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 3 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 3 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 3 70 3 71 3 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 3 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 3 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 3 75 2 pad1 bit (36) aligned, 3 76 2 name char (32), /* ASCII name of channel */ 3 77 2 access_class (2) bit (72) aligned, /* access class range */ 3 78 2 comment char (48), /* printable message about channel */ 3 79 2 charge_type fixed bin (17) unal, /* billing group */ 3 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 3 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 3 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 3 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 3 84 2 pad2 bit (18) unaligned, 3 85 2 answerback char (8), /* answerback string expected */ 3 86 2 initial_terminal_type 3 87 char (32) unal, /* as specified in the CMF */ 3 88 2 mpx_data unal, /* data used only for multiplexed channels */ 3 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 3 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 3 91 2 flags, 3 92 ( 3 attributes, 3 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 3 94 4 audit_access_error 3 95 bit (1), /* ON means ck that person auth is inside access class range */ 3 96 /* this implies that the access_class describes a range of 3 97* legitimate user auths. */ 3 98 4 hardwired bit (1), /* ON means it is */ 3 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 3 100 4 dont_read_answerback 3 101 bit (1), /* ON means don't try to read answerback */ 3 102 4 pada bit (4), 3 103 3 access_control unaligned, /* As below */ 3 104 4 dial_out bit (1), /* dialing user must be on ACS */ 3 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 3 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 3 107 4 login bit (1), /* logging in user must be on acs */ 3 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 3 109 4 pado bit (3), 3 110 3 options, 3 111 4 execute_initial_command 3 112 bit (1), /* ON means to do it */ 3 113 4 attached_by_operator 3 114 bit (1), /* ON means temporary attachment. */ 3 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 3 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 3 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 3 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 3 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 3 120 4 generic_destination_present 3 121 bit (1), /* ON means that the initial_command field contains 3 122* a generic destination to match on dial_out or priv attach */ 3 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 3 124 4 pado bit (9) 3 125 ) unaligned, 3 126 2 initial_command char (64), /* pseudo first input line */ 3 127 /**** The following variables represent dynamic control info, and 3 128* are used mostly by dialup_ and asu_ */ 3 129 2 event fixed bin (71), /* event call channel for channel events */ 3 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 3 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 3 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 3 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 3 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 3 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 3 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 3 137 /* 0 = dialup_, 1 = mc_tty_ */ 3 138 3 save_arg bit (1) unal, /* -save login arg given */ 3 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 3 140 3 detach_after_hangup 3 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 3 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 3 143 3 hold_arg bit (1) unal, /* -hold arg given */ 3 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 3 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 3 146 3 current_access_class_valid 3 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 3 148 3 pad bit (7) unal, 3 149 2 twx fixed bin, /* channel device index */ 3 150 2 state fixed bin, /* channel state */ 3 151 2 tty_id_code char (4), /* channel id (answerback) */ 3 152 2 current_terminal_type 3 153 char (32) unal, /* most recently-set terminal type */ 3 154 2 process ptr unal, /* ptr to ATE owning this channel */ 3 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 3 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 3 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 3 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 3 159* We do not yet define multi-class connections, but we will someday. */ 3 160 2 disconnected_ate_index 3 161 fixed bin (17) unal, /* index of ate of disconnected process */ 3 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 3 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 3 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 3 165 2 pad3 bit (14) unaligned, 3 166 /**** The following variables are kept for metering purposes. */ 3 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 3 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 3 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 3 170 2 dialup_time fixed bin (71), /* time of present dialup */ 3 171 2 disconnected_proc_command 3 172 fixed bin (12) unsigned unal, 3 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 3 174 2 disconnected_proc_number 3 175 fixed bin (12) unsigned unal, 3 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 3 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 3 178 /* number of disconnected processes that user has */ 3 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 3 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 3 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 3 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 3 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 3 184 /**** had the space. */ 3 185 2 threads aligned like channel_threads, 3 186 /**** The use name is that of the user who gave the dial or slave ****/ 3 187 /**** preaccess request. ****/ 3 188 2 user_name unaligned, 3 189 3 person char (20) unaligned, 3 190 3 project char (9) unaligned, 3 191 3 pad char (3) unaligned, /* no tag */ 3 192 2 iocbp ptr unaligned; /* 104 words */ 3 193 3 194 3 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 3 196* overlays initial_command field for slave and autocall lines */ 3 197 3 198 3 199 3 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 3 201 /* These variables are filled in from the CMF */ 3 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 3 203 2 memory fixed bin, /* amount of memory on this FNP */ 3 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 3 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 3 206 2 service_type fixed bin, /* service type */ 3 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 3 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 3 209 /**** The following are used during system operation to remember the state of the FNP */ 3 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 3 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 3 212 2 mpxe like mpxe, /* standard multiplexer data */ 3 213 2 threads aligned like channel_threads, 3 214 /* same mpx threads as channel */ 3 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 3 216 3 217 /* This structure describes the data necessary to control a multiplexer. 3 218* For FNP's., a copy appears in the fnpe. For communications lines, it 3 219* overlays the initial_command field in the cdte. */ 3 220 3 221 dcl 1 mpxe based (mpxep) aligned, 3 222 2 state fixed bin, /* current state, up, down, loading */ 3 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 3 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 3 225 2 n_bootloads fixed bin, /* count of load attempts */ 3 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 3 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 3 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 3 229 2 time_load_start fixed bin (71), /* time current load started */ 3 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 3 231 2 flags unal, 3 232 3 go bit (1), /* start MPX after it loads */ 3 233 3 listening bit (1), /* listen has been done on subchannels */ 3 234 3 check bit (1), /* loaded with check option */ 3 235 3 retry_load bit (1), /* reload if load fails */ 3 236 3 pad1 bit (32), 3 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 3 238 3 239 /* These threads define the tree of multiplexers in the cdt. */ 3 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 3 241 /* by alpha sort order of the channel name. Daughter points to the */ 3 242 /* first child of this node, if any. Daughter count is the number */ 3 243 /* of children, as a consistency check. Mother is a back pointer to */ 3 244 /* the parent, present in all the children, not just the first. */ 3 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 3 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 3 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 3 248 3 249 dcl 1 channel_threads aligned based, 3 250 2 next_sister fixed bin unaligned, 3 251 2 prev_sister fixed bin unaligned, 3 252 2 daughter fixed bin unaligned, 3 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 3 254 2 pad bit (18) unaligned, 3 255 2 daughter_count fixed bin unaligned; 3 256 3 257 /* Values for cdte.service_type field */ 3 258 3 259 dcl ( 3 260 ANS_SERVICE init (1), /* login or dial */ 3 261 FTP_SERVICE init (2), /* file transfer service */ 3 262 MC_SERVICE init (3), /* message coordinator */ 3 263 SLAVE_SERVICE init (4), /* special channel */ 3 264 DIAL_SERVICE init (5), /* transient state */ 3 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 3 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 3 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 3 268 ) fixed bin internal static options (constant); 3 269 3 270 /* Values for service type in both cdte and fnpe */ 3 271 3 272 dcl ( 3 273 INACTIVE init (7), /* not to be used, even though configured */ 3 274 ACTIVE init (1) 3 275 ) /* for FNP only, configured and to be used */ 3 276 fixed bin internal static options (constant); 3 277 3 278 /* Value for both cdte.in_use and fnpe.state */ 3 279 3 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 3 281 /* was not configured at Multics bootload time */ 3 282 3 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 3 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 3 285 3 286 /* Value for cdte.in_use */ 3 287 3 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 3 289 /* channel deleted by CDT installation */ 3 290 3 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 3 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 3 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 3 294 3 295 3 296 /* Values for mpxe.state field */ 3 297 3 298 dcl ( 3 299 FNP_FREE init (0), /* this fnpe is not used */ 3 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 3 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 3 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 3 303 FNP_UP init (4) /* FNP is up and running fine */ 3 304 ) fixed bin internal static options (constant); 3 305 3 306 dcl ( 3 307 MPX_FREE init (0), /* this mpxe is not used */ 3 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 3 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 3 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 3 311 MPX_UP init (4) /* MPX is up and running fine */ 3 312 ) fixed bin internal static options (constant); 3 313 4 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 4 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 4 8* Add data needed for the uncp multiplexer (DSA gateway) interface 4 9* implementation. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* Values for fnpe.type field */ 4 14 /* 4 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 4 16* Added in March 1982 - DN7100.fd. 4 17**/ 4 18 4 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 4 20 DN6600 init (2), /* a DataNet 6600 FNP */ 4 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 4 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 4 23 ) fixed bin internal static options (constant); 4 24 4 25 dcl fnp_types (4) char (8) int static options (constant) 4 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 4 27 4 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 4 29 init (355, 6600, 6670, 7100); 4 30 4 31 dcl supported_fnp (4) bit (1) int static options (constant) 4 32 init ("0"b, "0"b, "1"b, "1"b); 4 33 4 34 4 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 3 314 3 315 3 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 667 668 5 1 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 5 2 5 3 /* This include file declares the "author" substructure 5 4* in a form suitable for using the PL/I "like" attribute. 5 5* 5 6* Written 750304 by PG 5 7**/ 5 8 5 9 dcl 1 author_dcl aligned based, 6 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 6 2 6 3 /* the "author" items must always be the first ones in the table. The 6 4* module which moves the converted table to the System Control process 6 5* fills in these data items and assumes them to be at the head of the segment 6 6* regardless of the specific table's actual declaration. The variables 6 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 6 8* respectively. For tables installed in multiple processes, these 6 9* are to be used to lock out multiple installations. */ 6 10 6 11 /* Lock should be used as a modification lock. Since, in general, 6 12* entries may not be moved in system tables, even by installations, 6 13* it is sufficient for only installers and programs that change threads 6 14* to set or respect the lock. Simply updating data in an entry 6 15* requires no such protection. 6 16* 6 17* Last_install_time is used by readers of system tables to detect 6 18* installations or other serious modifications. By checking it before 6 19* and after copying a block of data, they can be protected against 6 20* modifications. 6 21* 6 22* Modules that set the lock should save proc_group_id, and then 6 23* put their group id there for the time they hold the lock. 6 24* if they do not actually install the, they should restore the group id. 6 25**/ 6 26 6 27 2 author aligned, /* validation data about table's author */ 6 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 6 29 3 lock bit (36), /* installation lock */ 6 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 6 31 3 update_authorization bit (1) unal, /* update only authorizations */ 6 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 6 33 3 pad bit (33) unaligned, 6 34 3 last_install_time fixed bin (71), 6 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 6 36 3 w_dir char (64), /* author's working directory */ 6 37 6 38 /* END INCLUDE FILE author.incl.pl1 */ 5 10 5 11 2 pad; 5 12 5 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 669 670 7 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 7 2 7 3 /* Written November 10 1975 by Paul Green */ 7 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 7 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 7 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 7 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 7 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 7 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 7 10 7 11 7 12 /****^ HISTORY COMMENTS: 7 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 7 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 15* Add a DSA line type. 7 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 7 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 18* Add HASP_OPR to identify HASP workstation consoles with login service. 7 19* END HISTORY COMMENTS */ 7 20 7 21 7 22 declare (LINE_MC initial (-2), 7 23 LINE_TELNET initial (-1), 7 24 LINE_UNKNOWN initial (0), 7 25 LINE_ASCII initial (1), 7 26 LINE_1050 initial (2), 7 27 LINE_2741 initial (3), 7 28 LINE_ARDS initial (4), 7 29 LINE_SYNCH initial (5), 7 30 LINE_G115 initial (6), 7 31 LINE_BSC initial (7), 7 32 LINE_ETX initial (8), 7 33 LINE_VIP initial (9), 7 34 LINE_ASYNC1 initial (10), 7 35 LINE_ASYNC2 initial (11), 7 36 LINE_ASYNC3 initial (12), 7 37 LINE_SYNC1 initial (13), 7 38 LINE_SYNC2 initial (14), 7 39 LINE_SYNC3 initial (15), 7 40 LINE_POLLED_VIP initial (16), 7 41 LINE_X25LAP initial (17), 7 42 LINE_HDLC initial (18), 7 43 LINE_COLTS initial (19), 7 44 LINE_DSA initial (20), 7 45 LINE_HASP_OPR initial (21) 7 46 ) fixed bin internal static options (constant); 7 47 7 48 dcl max_line_type fixed bin int static options (constant) init (21); 7 49 7 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 7 51 7 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 7 53 7 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 7 55 "MC", /* -2 */ 7 56 "TELNET", /* -1 */ 7 57 "none", /* 0 */ 7 58 "ASCII", /* 1 */ 7 59 "1050", /* 2 */ 7 60 "2741", /* 3 */ 7 61 "ARDS", /* 4 */ 7 62 "Sync", /* 5 */ 7 63 "G115", /* 6 */ 7 64 "BSC", /* 7 */ 7 65 "202ETX", /* 8 */ 7 66 "VIP", /* 9 */ 7 67 "ASYNC1", /* 10 */ 7 68 "ASYNC2", /* 11 */ 7 69 "ASYNC3", /* 12 */ 7 70 "SYNC1", /* 13 */ 7 71 "SYNC2", /* 14 */ 7 72 "SYNC3", /* 15 */ 7 73 "POLLED_VIP", /* 16 */ 7 74 "X25LAP", /* 17 */ 7 75 "HDLC", /* 18 */ 7 76 "COLTS", /* 19 */ 7 77 "DSA", /* 20 */ 7 78 "HASP_OPR"); /* 21 */ 7 79 7 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 671 672 8 1 /* BEGIN INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 8 2 8 3 /* This include file defines the priorities of all of the event channels used by the answering service. 8 4* 8 5* They are declared as named constants. They are used in calls to ipc_$decl_ev_call_chn. 8 6* The names correspond to the functions of the event call handlers. 8 7* For brevity in names, MC means message coordinator, and LOGIN includes logout as well. 8 8* 8 9* The comment on each constant lists the procedure(s) that use it to set event channel priorities. 8 10* See the code in those procedures for information on the handlers themselves 8 11* (which are entry variables in some cases, and thus could not be documented in this file). 8 12* 8 13* The priorities range from zero (highest) to 22 (lowest used by the answering service). 8 14* 8 15* The event wait channel on which the A.S. goes blocked awaiting input on the initializer console has highest 8 16* of all priorities, set by as_init_ calling ipc_$set_wait_prior. 8 17* 8 18* Written June 1981 by T. Casey for MR9.0 8 19* Modified 1984-10-15 BIM for sac -> as_request. 8 20* as_request is above login, since sac is important and 8 21* dial requests for already logged in users can take 8 22* first dibs over new logins. 8 23**/ 8 24 8 25 dcl MC_PRIO fixed bin int static options (constant) init (1); /* mc_commands_, mc_con_rec_, mc_util_, mrd_tester */ 8 26 dcl SYSERR_COPY_PRIO fixed bin int static options (constant) init (2); /* syserr_log_man_ */ 8 27 dcl SHUTDOWN_PRIO fixed bin int static options (constant) init (3); /* admin */ 8 28 dcl ACCT_UPDATE_PRIO fixed bin int static options (constant) init (4); /* act_ctl_ */ 8 29 dcl DAEMON_LOGIN_PRIO fixed bin int static options (constant) init (8); /* daemon_user_manager_ */ 8 30 dcl AS_REQUEST_PRIO fixed bin int static options (constant) init (7); /* as_request_ */ 8 31 dcl INSTALL_PRIO fixed bin int static options (constant) init (8); /* up_sysctl_ */ 8 32 dcl INT_LOGIN_PRIO fixed bin int static options (constant) init (8); /* asu_, dialup_, ftp_dialup_ */ 8 33 dcl MPX_LOAD_PRIO fixed bin int static options (constant) init (11); 8 34 /* as_vip7760_mpx_, as_mcs_mpx_, as_ibm3270_mpx_, as_hasp_mpx_ */ 8 35 dcl ABS_DEFER_PRIO fixed bin int static options (constant) init (19); /* absentee_utility_ */ 8 36 dcl ABS_LOGIN_PRIO fixed bin int static options (constant) init (20); /* abentee_user_manager_ */ 8 37 dcl CORE_FLUSH_PRIO fixed bin int static options (constant) init (22); /* as_meter_ */ 8 38 8 39 /* END INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 673 674 9 1 /* BEGIN INCLUDE FILE event_call_info.incl.pl1 */ 9 2 9 3 /* T. Casey, May 1978 */ 9 4 9 5 dcl event_call_info_ptr ptr; 9 6 9 7 dcl 1 event_call_info aligned based (event_call_info_ptr), /* argument structure passed to event call procedure */ 9 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 9 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 9 10 2 sender bit (36), /* process id of sender */ 9 11 2 origin, 9 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 9 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 9 14 2 data_ptr ptr; /* ptr given to dcl_event_call_channel */ 9 15 9 16 /* END INCLUDE FILE event_call_info.incl.pl1 */ 675 676 10 1 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 10 2 10 3 10 4 /****^ HISTORY COMMENTS: 10 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 10 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 10 7* Added sl_info structure and associated named constants for use in calling 10 8* sys_log_$general. 10 9* END HISTORY COMMENTS */ 10 10 10 11 10 12 /* format: style4 */ 10 13 10 14 dcl ( 10 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 10 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 10 17 SL_TYPE init (-1), /* type message */ 10 18 SL_LOG_SILENT init (0), /* log message */ 10 19 SL_LOG init (1), /* log & type message */ 10 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 10 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 10 22 ) fixed bin internal static options (constant); 10 23 10 24 dcl 1 sl_info aligned automatic, 10 25 2 version char(8), /* structure version */ 10 26 2 arg_list_ptr ptr, /* arg_list with values */ 10 27 2 loc, 10 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 10 29 /* These flags control where the corresponding data item is found.*/ 10 30 /* -1: data appears in the corresponding structure element below */ 10 31 /* 0: data is not present anywhere */ 10 32 /* +N: data is Nth item in argument list pointed to by */ 10 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 10 34 /* corresponding structure element. */ 10 35 /* if data = +N: */ 10 36 /* argN is data_ptr, argN+1 is data_len */ 10 37 /* if ioa_msg = +N: */ 10 38 /* argN+1, ... argLAST are arguments substituted into the */ 10 39 /* ioa_msg control string. The formatted msg is returned. */ 10 40 2 flags, 10 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 10 42 3 flags_pad bit(35) unal, 10 43 2 mode fixed bin, /* as-mode, command-mode */ 10 44 2 severity fixed bin, /* error severity */ 10 45 2 code fixed bin(35), /* error table code */ 10 46 2 caller char(65) varying, /* caller refname$entryname*/ 10 47 2 data, /* binary data ptr/length */ 10 48 3 data_ptr ptr, 10 49 3 data_lth fixed bin(21), 10 50 2 class char(10) varying, /* binary data class */ 10 51 2 ioa_msg char(500) varying; /* formatted message text */ 10 52 10 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 54 /* */ 10 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 10 56 /* their data types should be as shown in the structure above, except that */ 10 57 /* character strings should be char(*) nonvarying. */ 10 58 /* */ 10 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 60 10 61 /* value for sl_info.version */ 10 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 10 63 10 64 /* values for sl_info.mode */ 10 65 dcl (SL_INFO_as_mode init(1), 10 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 10 67 10 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 10 69 dcl (SL_INFO_arg_given_in_structure init(-1), 10 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 10 71 10 72 10 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 74 /* */ 10 75 /* The following static structures are commonly used in the Login Server */ 10 76 /* user control software. */ 10 77 /* */ 10 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 79 10 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 10 81 10 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 10 83 2 version char(8) init ("sl_info1"), 10 84 2 arg_list_ptr ptr init (null), 10 85 2 loc, 10 86 3 (mode init (-1), 10 87 severity init ( 1), 10 88 code init ( 2), 10 89 caller init (-1), 10 90 data init ( 0), 10 91 class init ( 0), 10 92 ioa_msg init ( 3)) fixed bin, 10 93 2 flags, 10 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 95 3 flags_pad bit(35) unal init ("0"b), 10 96 2 mode fixed bin init ( 1), 10 97 2 severity fixed bin init ( 0), 10 98 2 code fixed bin(35) init ( 0), 10 99 2 caller char(65) varying init (""), 10 100 2 data, 10 101 3 data_ptr ptr init (null), 10 102 3 data_lth fixed bin(21) init ( 0), 10 103 2 class char(10) varying init (""), 10 104 2 ioa_msg char(500) varying init (""); 10 105 10 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 10 107 10 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 10 109 2 version char(8) init ("sl_info1"), 10 110 2 arg_list_ptr ptr init (null), 10 111 2 loc, 10 112 3 (mode init (-1), 10 113 severity init ( 1), 10 114 code init ( 0), 10 115 caller init (-1), 10 116 data init ( 0), 10 117 class init ( 0), 10 118 ioa_msg init ( 2)) fixed bin, 10 119 2 flags, 10 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 121 3 flags_pad bit(35) unal init ("0"b), 10 122 2 mode fixed bin init ( 1), 10 123 2 severity fixed bin init ( 0), 10 124 2 code fixed bin(35) init ( 0), 10 125 2 caller char(65) varying init (""), 10 126 2 data, 10 127 3 data_ptr ptr init (null), 10 128 3 data_lth fixed bin(21) init ( 0), 10 129 2 class char(10) varying init (""), 10 130 2 ioa_msg char(500) varying init (""); 10 131 10 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 10 133 10 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 10 135 2 version char(8) init ("sl_info1"), 10 136 2 arg_list_ptr ptr init (null), 10 137 2 loc, 10 138 3 (mode init (-1), 10 139 severity init ( 1), 10 140 code init ( 0), 10 141 caller init (-1), 10 142 data init ( 0), 10 143 class init ( 0), 10 144 ioa_msg init ( 2)) fixed bin, 10 145 2 flags, 10 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 10 147 3 flags_pad bit(35) unal init ("0"b), 10 148 2 mode fixed bin init ( 1), 10 149 2 severity fixed bin init ( 0), 10 150 2 code fixed bin(35) init ( 0), 10 151 2 caller char(65) varying init (""), 10 152 2 data, 10 153 3 data_ptr ptr init (null), 10 154 3 data_lth fixed bin(21) init ( 0), 10 155 2 class char(10) varying init (""), 10 156 2 ioa_msg char(500) varying init (""); 10 157 10 158 10 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 10 160 10 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 10 162 2 version char(8) init ("sl_info1"), 10 163 2 arg_list_ptr ptr init (null), 10 164 2 loc, 10 165 3 (mode init (-1), 10 166 severity init ( 1), 10 167 code init ( 2), 10 168 caller init (-1), 10 169 data init ( 0), 10 170 class init ( 0), 10 171 ioa_msg init ( 4)) fixed bin, 10 172 2 flags, 10 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 174 3 flags_pad bit(35) unal init ("0"b), 10 175 2 mode fixed bin init ( 1), 10 176 2 severity fixed bin init ( 0), 10 177 2 code fixed bin(35) init ( 0), 10 178 2 caller char(65) varying init (""), 10 179 2 data, 10 180 3 data_ptr ptr init (null), 10 181 3 data_lth fixed bin(21) init ( 0), 10 182 2 class char(10) varying init (""), 10 183 2 ioa_msg char(500) varying init (""); 10 184 10 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 10 186 10 187 dcl 1 sl_info_code_msg aligned int static options(constant), 10 188 2 version char(8) init ("sl_info1"), 10 189 2 arg_list_ptr ptr init (null), 10 190 2 loc, 10 191 3 (mode init (-1), 10 192 severity init (-1), 10 193 code init ( 1), 10 194 caller init (-1), 10 195 data init ( 0), 10 196 class init ( 0), 10 197 ioa_msg init ( 2)) fixed bin, 10 198 2 flags, 10 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 200 3 flags_pad bit(35) unal init ("0"b), 10 201 2 mode fixed bin init ( 1), 10 202 2 severity fixed bin init ( 0), 10 203 2 code fixed bin(35) init ( 0), 10 204 2 caller char(65) varying init (""), 10 205 2 data, 10 206 3 data_ptr ptr init (null), 10 207 3 data_lth fixed bin(21) init ( 0), 10 208 2 class char(10) varying init (""), 10 209 2 ioa_msg char(500) varying init (""); 10 210 10 211 10 212 /* Syntax: call Trace (ioa_ctl, args); */ 10 213 10 214 dcl 1 sl_info_msg aligned int static options(constant), 10 215 2 version char(8) init ("sl_info1"), 10 216 2 arg_list_ptr ptr init (null), 10 217 2 loc, 10 218 3 (mode init (-1), 10 219 severity init (-1), 10 220 code init ( 0), 10 221 caller init (-1), 10 222 data init ( 0), 10 223 class init ( 0), 10 224 ioa_msg init ( 1)) fixed bin, 10 225 2 flags, 10 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 227 3 flags_pad bit(35) unal init ("0"b), 10 228 2 mode fixed bin init ( 1), 10 229 2 severity fixed bin init ( 0), 10 230 2 code fixed bin(35) init ( 0), 10 231 2 caller char(65) varying init (""), 10 232 2 data, 10 233 3 data_ptr ptr init (null), 10 234 3 data_lth fixed bin(21) init ( 0), 10 235 2 class char(10) varying init (""), 10 236 2 ioa_msg char(500) varying init (""); 10 237 10 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 677 678 679 /* BEGIN MESSAGE DOCUMENTATION 680* 681* Message: 682* as_hasp_mpx_: ERROR_MESSAGE. Creating event channel for multiplexer TTY. 683* 684* S: $as1 685* 686* T: In response to a load_mpx operator command or during system initialization. 687* 688* M: A system error arose during the initialization of the HASP multiplexer 689* on channel TTY. 690* 691* A: $inform 692* 693* 694* Message: 695* as_hasp_mpx_: Invalid PARM specification in terminal type NAME for multiplexer TTY. 696* 697* S: $as1 698* 699* T: In response to a load_mpx operator command or during system initialization. 700* 701* M: The value specified for the configuration parameter PARM in the additional info string of the terminal type NAME 702* used for the HASP multiplexer on channel TTY is not acceptable to the system. 703* 704* A: Correct the value of the parameter in the TTT and reload the multiplexer. 705* 706* 707* Message: 708* as_hasp_mpx_: Unexpected wakeup (DATA1 DATA2) from process ID. 709* 710* S: $as1 711* 712* T: $run 713* 714* M: A message was received from the process whose processid is the 12-digit octal value ID; the contents of the message 715* are given by the two 12-digit octal values DATA1 and DATA2. No message was expected at this time. The wakeup is 716* ignored. 717* 718* A: $ignore 719* 720* 721* Message: 722* as_hasp_mpx_: Wakeup from multiplexer TTY has invalid state code VALUE. 723* 724* S: $as1 725* 726* T: $run 727* 728* M: A message was received indicating a change of state for the multiplexer on channel TTY; however, the new state of 729* the multiplexer, given by the decimal number VALUE, is not recognized by this module. 730* 731* A: $inform 732* 733* 734* Message: 735* as_hasp_mpx_: Load signalled for multiplexer TTY. 736* 737* S: $as1 738* 739* T: $run 740* 741* M: The physical connection and initial connection protocl for the HASP multiplexer on channel TTY has been completed 742* successfully. The multiplexer is now ready for use. 743* 744* A: Start the appropriate I/O daemon processes for the multiplexer as indicated by the system administrators or by the 745* user who requested the multiplexer be loaded. 746* 747* 748* Message: 749* as_hasp_mpx_: Crash signalled for multiplexer TTY. 750* 751* S: $as1 752* 753* T: $run 754* 755* M: The physical connection for the HASP multiplexer on channel TTY has been broken either because of an error or 756* or because of a request from the remote host/workstation. 757* 758* A: Check the console for a message concerning this channel from hasp_mpx. If such a message is found, refer to its 759* documentation for further action; otherwise, the remote host/workstation has requested termination of the connection 760* and the I/O daemons using this channel should be logged out. 761* 762* 763* Message: 764* as_hasp_mpx_: More than 17 subchannels specified for HASP multiplexer TTY (COUNT). 765* 766* S: $as1 767* 768* T: In response to a load_mpx operator command or during system initialization. 769* 770* M: The definition of the HASP multiplexer on channel TTY contains too many subchannels. 771* 772* A: Correct the CDT entry for this multiplexer and reload it. 773* 774* 775* Message: 776* as_hasp_mpx_: ERROR_MESSAGE. Cannot get additional info from terminal type NAME for multiplexer TTY. 777* 778* S: $as1 779* 780* T: In response to a load_mpx operator command or during system initialization. 781* 782* M: The terminal type specified by NAME was not given an additional_info string in its TTT entry. This string is 783* required to specify the configuration parameters for the HASP multiplexer on channel TTY. 784* 785* A: Check both the CDT entry for this multiplexer and the TTT entry for the terminal type. Either the wrong terminal 786* type was specified in the CDT or the terminal type's definition is incomplete. Correct whichever table is in error and 787* reload the multiplexer. 788* 789* 790* Message: 791* as_hasp_mpx_: Invalid subchannel name NAME for HASP multiplexer TTY. 792* 793* S: $as1 794* 795* T: In response to a load_mpx operator command or during system initialization. 796* 797* M: The name specified for a subchannel of the HASP multiplexer on channel TTY does not conform to the conventions 798* defined in MAM Communications for naming such channels. 799* 800* A: Correct the CDT entry for this multiplexer and reload it. 801* 802* 803* Message: 804* as_hasp_mpx_: Line type for hasp operator console on multiplexer TTY must be 805* "HASP_OPR" when configured for login service. 806* 807* S: $as1 808* 809* T: In response to a load_mpx operator command or during system 810* initialization. 811* 812* M: The line type must be set for HASP_OPR on a hasp operator console 813* subchannel when it is configured for login service. 814* 815* A: Correct the CDT entry for this multiplexer and reload it. 816* 817* 818* Message: 819* as_hasp_mpx_: Duplicate subchannel name NAME for HASP multiplexer TTY. 820* 821* S: $as1 822* 823* T: In response to a load_mpx operator command or during system initialization. 824* 825* M: The same name has been used for two or more subchannels of the HASP multiplexer on channel TTY. 826* 827* A: Correct the CDT entry for this multiplexer and reload it. 828* 829* 830* Message: 831* as_hasp_mpx_: Subchannel NAME of multiplexer TTY does not have TYPE service type. 832* 833* S: $as1 834* 835* T: In response to a load_mpx operator command or during system initialization. 836* 837* M: The specified subchannel of the HASP multiplexer on channel TTY was not 838* given the slave service type or, in the case of operator console 839* subchannels, slave or login. 840* 841* A: Correct the CDT entry for this multiplexer and reload it. 842* 843* 844* Message: 845* as_hasp_mpx_: Too many printers and punches configured for HASP multiplexer TTY. 846* 847* S: $as1 848* 849* T: In response to a load_mpx operator command or during system initialization. 850* 851* M: More than 8 card punches and line printers have been specified for the HASP multiplexer on channel TTY or a card 852* punch and line printer which use the same flow control flag have been specified. (See MAM Communications for a 853* description of the rules for naming card punches and line printers.) 854* 855* A: Correct the CDT entry for this multiplexer and reload it. 856* 857* END MESSAGE DOCUMENTATION */ 858 859 end as_hasp_mpx_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1536.9 as_hasp_mpx_.pl1 >special_ldd>install>MR12.2-1061>as_hasp_mpx_.pl1 665 1 10/20/82 0938.5 hasp_load_data.incl.pl1 >ldd>include>hasp_load_data.incl.pl1 1-56 2 03/27/82 0436.6 hasp_device_data.incl.pl1 >ldd>include>hasp_device_data.incl.pl1 667 3 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 3-314 4 07/19/88 1524.1 fnp_types.incl.pl1 >special_ldd>install>MR12.2-1061>fnp_types.incl.pl1 669 5 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 5-10 6 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 671 7 08/06/87 0913.4 line_types.incl.pl1 >ldd>include>line_types.incl.pl1 673 8 01/21/85 0912.2 as_wakeup_priorities.incl.pl1 >ldd>include>as_wakeup_priorities.incl.pl1 675 9 06/29/79 1728.0 event_call_info.incl.pl1 >ldd>include>event_call_info.incl.pl1 677 10 08/06/87 0913.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.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. ANS_SERVICE constant fixed bin(17,0) initial dcl 3-259 ref 563 566 DEFAULT_HASP_CONFIGURATION_DATA 000000 constant structure level 1 dcl 1-65 ref 271 HASP_CONSOLE constant fixed bin(17,0) initial dcl 2-6 ref 528 558 HASP_HOST constant fixed bin(17,0) initial dcl 1-52 ref 312 333 HASP_MAX_MAX_BLOCK_SIZE 000011 constant fixed bin(17,0) initial dcl 1-58 set ref 338* HASP_MIN_MAX_BLOCK_SIZE 000012 constant fixed bin(17,0) initial dcl 1-58 set ref 338* HASP_MPX_DOWN 000016 constant fixed bin(71,0) initial dcl 1-22 ref 174 189 HASP_MPX_MASKED 000014 constant fixed bin(71,0) initial dcl 1-22 ref 174 HASP_MPX_UP 000020 constant fixed bin(71,0) initial dcl 1-22 ref 174 180 183 189 HASP_PRINTER constant fixed bin(17,0) initial dcl 2-6 ref 545 HASP_PUNCH constant fixed bin(17,0) initial dcl 2-6 ref 555 HASP_READER constant fixed bin(17,0) initial dcl 2-6 ref 535 HASP_WORKSTATION constant fixed bin(17,0) initial dcl 1-52 ref 315 LINE_BSC constant fixed bin(17,0) initial dcl 7-22 ref 221 LINE_HASP_OPR constant fixed bin(17,0) initial dcl 7-22 ref 568 MPX_BOOT constant fixed bin(17,0) initial dcl 3-306 ref 183 MPX_LOAD_PRIO 000075 constant fixed bin(17,0) initial dcl 8-33 set ref 129* MPX_UP constant fixed bin(17,0) initial dcl 3-306 ref 189 NAME 000022 constant char(32) initial packed unaligned dcl 81 set ref 123* 142* 167* 175* 180* 260* 303* 584* 597* 612* 625* 639* 653* P_called_from_load parameter bit(1) dcl 482 ref 479 582 594 609 622 636 650 P_cdtep parameter pointer dcl 45 in procedure "as_hasp_mpx_" ref 103 109 197 206 210 P_cdtep parameter pointer dcl 483 in procedure "parse_subchannel_name" ref 479 491 P_cdtp parameter pointer dcl 45 ref 103 107 197 206 209 P_check_sw parameter bit(1) dcl 54 ref 103 P_code parameter fixed bin(35,0) dcl 55 set ref 103 111* 125* 137* 150* 197 200* P_error parameter entry variable dcl 51 ref 206 213 P_event_call_info_ptr parameter pointer dcl 45 ref 155 158 P_mpx_channel_name parameter char packed unaligned dcl 43 ref 103 106 197 206 211 P_none_parameter_value parameter fixed bin(17,0) dcl 449 ref 445 457 P_parameter parameter bit(1) packed unaligned dcl 396 set ref 392 400* 405* P_parameter_max parameter fixed bin(17,0) dcl 420 in procedure "find_numeric_parameter" ref 416 431 P_parameter_max parameter fixed bin(17,0) dcl 449 in procedure "find_numeric_or_none_parameter" ref 445 465 P_parameter_min parameter fixed bin(17,0) dcl 420 in procedure "find_numeric_parameter" ref 416 431 P_parameter_min parameter fixed bin(17,0) dcl 449 in procedure "find_numeric_or_none_parameter" ref 445 465 P_parameter_name parameter char packed unaligned dcl 448 in procedure "find_numeric_or_none_parameter" set ref 445 454* P_parameter_name parameter char packed unaligned dcl 357 in procedure "find_parameter" ref 355 362 366 368 P_parameter_name parameter char packed unaligned dcl 419 in procedure "find_numeric_parameter" set ref 416 425* P_parameter_name parameter char packed unaligned dcl 395 in procedure "find_switch_parameter" set ref 392 400* P_parameter_value parameter varying char dcl 358 in procedure "find_parameter" set ref 355 381 384* P_parameter_value parameter fixed bin(17,0) dcl 449 in procedure "find_numeric_or_none_parameter" set ref 445 457* 468* P_parameter_value parameter fixed bin(17,0) dcl 420 in procedure "find_numeric_parameter" set ref 416 434* P_subchannel_list_ptr parameter pointer dcl 45 ref 103 110 206 212 P_subchannel_number parameter fixed bin(17,0) dcl 484 set ref 479 575* P_subchannel_type parameter fixed bin(17,0) dcl 484 set ref 479 528* 535* 545* 555* 558 SLAVE_SERVICE constant fixed bin(17,0) initial dcl 3-259 ref 559 563 SL_LOG 000121 constant fixed bin(17,0) initial dcl 10-14 set ref 123* 142* 167* 175* 180* 260* 303* 584* 597* 612* 625* 639* 653* additional_info_str 000224 automatic varying char(512) dcl 254 set ref 301* 309 362 369 372 378 379 384 addr builtin function dcl 99 ref 113 162 author based structure level 2 dcl 5-9 author_dcl based structure level 1 dcl 5-9 binary builtin function dcl 99 ref 430 464 517 cdte based structure level 1 dcl 3-72 cdtep 000174 automatic pointer dcl 3-41 set ref 109* 113 117 117 120 129 129* 142 161* 162 172 210* 221 231 270 277 297 297 297 301 303 597 603 cdteps 1 based pointer array level 2 packed packed unaligned dcl 60 ref 240 286 cdtp 000172 automatic pointer dcl 3-41 set ref 107* 160* 209* channel_threads based structure level 1 dcl 3-249 code 000104 automatic fixed bin(35,0) dcl 68 set ref 120* 121 122* 123* 129* 130 134* 137 183* 186* 189* 301* 302 303* configuration_data 2 based structure level 2 dcl 1-7 set ref 271* convert_ipc_code_ 000014 constant entry external dcl 85 ref 122 count based fixed bin(17,0) level 2 dcl 60 set ref 227 238 259 260* 265 284 data_ptr 6 based pointer level 2 dcl 9-7 ref 161 device_number 16 based fixed bin(17,0) array level 3 in structure "hasp_load_data" dcl 1-7 in procedure "as_hasp_mpx_" set ref 290* device_number 000530 automatic fixed bin(17,0) dcl 489 in procedure "parse_subchannel_name" set ref 511* 517* 518 518 531 534 538 541 544 548 551 554 575 device_type 15 based fixed bin(17,0) array level 3 dcl 1-7 set ref 290* devx 14 based fixed bin(17,0) array level 3 dcl 1-7 set ref 288* error 000162 automatic entry variable dcl 86 set ref 213* 218 221 227 244 589 603 617 630 644 658 error_table_$action_not_performed 000012 external static fixed bin(35,0) dcl 83 ref 125 150 event 72 based fixed bin(71,0) level 2 dcl 3-72 set ref 117 117* 120* 129* 270 event_call_info based structure level 1 dcl 9-7 event_call_info_ptr 000200 automatic pointer dcl 9-5 set ref 158* 161 164 164 166 167 174 174 174 175 180 183 189 189 event_channel based fixed bin(71,0) level 2 dcl 1-7 set ref 270* event_message_array 000160 automatic bit(36) array packed unaligned dcl 77 set ref 166* 167* flags 12 based structure level 3 in structure "hasp_load_data" dcl 1-7 in procedure "as_hasp_mpx_" flags 50 based structure level 2 in structure "cdte" dcl 3-72 in procedure "as_hasp_mpx_" fnpe based structure level 1 dcl 3-200 found_console 000126 automatic bit(1) dcl 73 set ref 233* 244 279* 524 527* found_printers 000137 automatic bit(1) array dcl 73 set ref 234* 280* 538 544* 551 found_punches 000147 automatic bit(1) array dcl 73 set ref 234* 280* 541 548 554* found_readers 000127 automatic bit(1) array dcl 73 set ref 234* 280* 531 534* get_process_id_ 000016 constant entry external dcl 87 ref 164 get_system_free_area_ 000020 constant entry external dcl 88 ref 114 hasp_configuration_data based structure level 1 dcl 1-30 hasp_load_data based structure level 1 dcl 1-7 set ref 135 146 267 hasp_load_data_n_subchannels 000166 automatic fixed bin(17,0) dcl 1-16 set ref 265* 267 267 hld_ptr 000170 automatic pointer dcl 1-17 set ref 115* 134* 135 146 146 267* 270 271 288 290 290 312 315 319 321 323 325 327 330 333 333 336 338 341 343 345 347 349 hphcs_$tty_control 000022 constant entry external dcl 89 ref 134 ic_timeout 6 based fixed bin(17,0) level 3 dcl 1-7 set ref 341* idx 000440 automatic fixed bin(17,0) dcl 257 in procedure "prepare_load_data" set ref 284* 286 288 290 290* idx 000157 automatic fixed bin(17,0) dcl 76 in procedure "as_hasp_mpx_" set ref 238* 240* idx 000452 automatic fixed bin(17,0) dcl 360 in procedure "find_parameter" set ref 362* 363 368* 368 369 372 376* 376 378 379 384 index builtin function dcl 99 ref 218 362 initial_command 51 based char(64) level 2 dcl 3-72 set ref 113 162 initial_terminal_type 37 based char(32) level 2 packed packed unaligned dcl 3-72 set ref 142* 297 297 297 301* 303* ipc_$create_ev_chn 000024 constant entry external dcl 90 ref 120 ipc_$decl_ev_call_chn 000026 constant entry external dcl 91 ref 129 ipc_$delete_ev_chn 000030 constant entry external dcl 92 ref 117 jdx 000453 automatic fixed bin(17,0) dcl 360 set ref 372* 373 376 378* 379 379* 381 384 length builtin function dcl 99 ref 231 277 297 309 368 369 379 493 508 514 line_type 33 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-72 ref 221 568 load_parameter_name 000115 automatic char(32) packed unaligned dcl 70 set ref 142* 366* low builtin function dcl 99 ref 297 max_block_size 3 based fixed bin(17,0) level 3 dcl 1-7 set ref 338* max_device_input_records 4 based fixed bin(17,0) level 3 dcl 1-7 set ref 349* max_naks 11 based fixed bin(17,0) level 3 dcl 1-7 set ref 347* maxlength builtin function dcl 99 ref 381 message 2 based fixed bin(71,0) level 2 dcl 9-7 set ref 166 174 174 174 175* 180 183 189 189 mpx_channel_name 000105 automatic char(32) packed unaligned dcl 70 set ref 106* 123* 134* 142* 172* 175* 180* 183* 186* 189* 211* 218 218* 221* 227* 244* 260* 303* 584* 589* 612* 617* 625* 630* 639* 644* 653* 658* mpxe based structure level 1 dcl 3-221 mpxep 000176 automatic pointer dcl 3-41 set ref 113* 162* 183 189 multileave_mode 12(02) based bit(1) level 4 packed packed unaligned dcl 1-7 set ref 323* multiplexer_mgr_$mpx_crashed 000032 constant entry external dcl 93 ref 189 multiplexer_mgr_$mpx_load_failed 000034 constant entry external dcl 94 ref 186 multiplexer_mgr_$mpx_loaded 000036 constant entry external dcl 94 ref 183 n_subchannels 13 based fixed bin(17,0) level 2 dcl 1-7 set ref 135 146 267* name 2 based char(32) level 2 dcl 3-72 set ref 172 231 277 493 496 498 584 589 597* 603 612 617 625 630 639 644 name_lth 000531 automatic fixed bin(17,0) dcl 489 set ref 493* 494 494 498 498 name_part 000524 automatic varying char(3) dcl 487 set ref 496* 502 502 502 502 508 524 531 538 548 null builtin function dcl 99 ref 115 146 number_part 000526 automatic varying char(1) dcl 488 set ref 498* 500* 508 514 516 517 numeric_value 000512 automatic fixed bin(35,0) dcl 452 in procedure "find_numeric_or_none_parameter" set ref 464* 465 465 468 numeric_value 000476 automatic fixed bin(35,0) dcl 423 in procedure "find_numeric_parameter" set ref 430* 431 431 434 options 50(17) based structure level 3 packed packed unaligned dcl 3-72 origin 5 based structure level 2 dcl 9-7 p 000436 automatic pointer dcl 256 in procedure "prepare_load_data" set ref 286* 288 290* p 000522 automatic pointer dcl 486 in procedure "parse_subchannel_name" set ref 491* 493 496 498 559 563 563 566 568 571 584 589 612 617 625 630 639 644 receive_timeout 7 based fixed bin(17,0) level 3 dcl 1-7 set ref 343* ring 5(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 9-7 ref 164 rtrim builtin function dcl 99 ref 231 277 493 rts_mode 12(04) based bit(1) level 4 packed packed unaligned dcl 1-7 set ref 327* 330* 333* 336* saved_cdtp 000010 internal static pointer dcl 79 set ref 107* 160 search builtin function dcl 99 ref 378 sender 4 based bit(36) level 2 dcl 9-7 set ref 164 167* service_type 32(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-72 ref 559 563 563 566 signon_mode 12(01) based bit(1) level 4 packed packed unaligned dcl 1-7 set ref 321* start_subchannel_name_idx 000125 automatic fixed bin(17,0) dcl 72 set ref 231* 277* 493 496 498 584 589 612 617 625 630 639 644 state based fixed bin(17,0) level 2 dcl 3-221 ref 183 189 string builtin function dcl 99 set ref 166* subchannel_list based structure level 1 dcl 60 subchannel_list_ptr 000100 automatic pointer dcl 63 set ref 110* 212* 227 238 240 259 260 265 284 286 subchannels 14 based structure array level 2 dcl 1-7 substr builtin function dcl 99 ref 372 378 384 496 498 584 589 612 617 625 630 639 644 suspend_all_mode 12 based bit(1) level 4 packed packed unaligned dcl 1-7 set ref 319* sys_log_ 000040 constant entry external dcl 96 ref 142 167 175 180 260 584 597 612 625 639 653 sys_log_$error_log 000042 constant entry external dcl 96 ref 123 303 system_area based area(1024) dcl 65 ref 135 146 267 system_area_ptr 000102 automatic pointer dcl 66 set ref 114* 135 146 267 trace_mode 12(03) based bit(1) level 4 packed packed unaligned dcl 1-7 set ref 325* transmit_timeout 10 based fixed bin(17,0) level 3 dcl 1-7 set ref 345* ttt_info_$additional_info 000044 constant entry external dcl 97 ref 301 twx 76 based fixed bin(17,0) level 2 dcl 3-72 ref 288 type 2 based fixed bin(17,0) level 3 dcl 1-7 set ref 312* 315* 333 unspec builtin function dcl 99 ref 166 use_iocb 50(25) based bit(1) level 4 packed packed unaligned dcl 3-72 set ref 571* value 000425 automatic varying char(32) dcl 255 in procedure "prepare_load_data" set ref 312* 312 315 327* 327 330 value 000506 automatic varying char(12) dcl 451 in procedure "find_numeric_or_none_parameter" set ref 454* 456 461 464 value 000462 automatic varying char(3) dcl 398 in procedure "find_switch_parameter" set ref 400* 400 405 value 000472 automatic varying char(12) dcl 422 in procedure "find_numeric_parameter" set ref 425* 427 430 verify builtin function dcl 99 ref 372 427 461 516 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_DEFER_PRIO internal static fixed bin(17,0) initial dcl 8-35 ABS_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 8-36 ACCT_UPDATE_PRIO internal static fixed bin(17,0) initial dcl 8-28 ACTIVE internal static fixed bin(17,0) initial dcl 3-272 AS_REQUEST_PRIO internal static fixed bin(17,0) initial dcl 8-30 CDT_version internal static fixed bin(17,0) initial dcl 3-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 3-38 CHANNEL_DELETED internal static fixed bin(17,0) initial dcl 3-288 CORE_FLUSH_PRIO internal static fixed bin(17,0) initial dcl 8-37 DAEMON_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 8-29 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 3-259 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 3-259 DN355 internal static fixed bin(17,0) initial dcl 4-19 DN6600 internal static fixed bin(17,0) initial dcl 4-19 DN6670 internal static fixed bin(17,0) initial dcl 4-19 DN7100 internal static fixed bin(17,0) initial dcl 4-19 FNP_BOOT internal static fixed bin(17,0) initial dcl 3-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 3-298 FNP_FREE internal static fixed bin(17,0) initial dcl 3-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 3-298 FNP_UP internal static fixed bin(17,0) initial dcl 3-298 FTP_SERVICE internal static fixed bin(17,0) initial dcl 3-259 HASP_DEVICE_NAMES internal static char(32) initial array packed unaligned dcl 2-15 HASP_MAX_DEVICE_RECORD_LTHS internal static fixed bin(21,0) initial array dcl 2-20 INACTIVE internal static fixed bin(17,0) initial dcl 3-272 INSTALL_PRIO internal static fixed bin(17,0) initial dcl 8-31 INT_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 8-32 LINE_1050 internal static fixed bin(17,0) initial dcl 7-22 LINE_2741 internal static fixed bin(17,0) initial dcl 7-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 7-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 7-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 7-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 7-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 7-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 7-22 LINE_DSA internal static fixed bin(17,0) initial dcl 7-22 LINE_ETX internal static fixed bin(17,0) initial dcl 7-22 LINE_G115 internal static fixed bin(17,0) initial dcl 7-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 7-22 LINE_MC internal static fixed bin(17,0) initial dcl 7-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 7-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 7-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 7-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 7-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 7-22 LINE_TELNET internal static fixed bin(17,0) initial dcl 7-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 7-22 LINE_VIP internal static fixed bin(17,0) initial dcl 7-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 7-22 MC_PRIO internal static fixed bin(17,0) initial dcl 8-25 MC_SERVICE internal static fixed bin(17,0) initial dcl 3-259 MPX_DOWN internal static fixed bin(17,0) initial dcl 3-306 MPX_FREE internal static fixed bin(17,0) initial dcl 3-306 MPX_SERVICE internal static fixed bin(17,0) initial dcl 3-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 3-306 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 3-280 SHUTDOWN_PRIO internal static fixed bin(17,0) initial dcl 8-27 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 10-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 10-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 10-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 10-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 10-62 SL_LOG_BEEP internal static fixed bin(17,0) initial dcl 10-14 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 10-14 SL_LOG_SILENT internal static fixed bin(17,0) initial dcl 10-14 SL_TYPE internal static fixed bin(17,0) initial dcl 10-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 10-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 10-14 SYSERR_COPY_PRIO internal static fixed bin(17,0) initial dcl 8-26 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 3-259 cdt based structure level 1 dcl 3-44 fnp_models internal static fixed bin(17,0) initial array dcl 4-28 fnp_types internal static char(8) initial array packed unaligned dcl 4-25 fnpep automatic pointer dcl 3-41 generic_destination based char(32) packed unaligned dcl 3-195 line_types internal static char(16) initial array packed unaligned dcl 7-54 max_line_type internal static fixed bin(17,0) initial dcl 7-48 n_sync_line_types internal static fixed bin(17,0) initial dcl 7-50 sl_info automatic structure level 1 dcl 10-24 sl_info_code_msg internal static structure level 1 dcl 10-187 sl_info_msg internal static structure level 1 dcl 10-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 10-161 sl_info_sev_code_msg internal static structure level 1 dcl 10-82 sl_info_sev_coded_msg internal static structure level 1 dcl 10-134 sl_info_sev_msg internal static structure level 1 dcl 10-108 supported_fnp internal static bit(1) initial array packed unaligned dcl 4-31 sync_line_type internal static fixed bin(17,0) initial array dcl 7-52 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_LOAD 001345 constant label dcl 146 ref 262 306 586 600 614 627 641 655 BAD_LOAD_PARAMETER 001307 constant label dcl 142 ref 315 330 369 373 381 405 427 431 461 465 BAD_NAME 004213 constant label dcl 582 ref 494 502 508 514 516 518 BAD_OPR_LINE_TYPE 004360 constant label dcl 594 ref 568 DUPLICATE_NAME 004466 constant label dcl 609 ref 524 531 538 548 EVENT_CHANNEL_LOSS 001152 constant label dcl 122 set ref 130 NEXT_SUBCHANNEL 002255 constant label dcl 241 ref 591 606 619 633 647 660 NOT_SLAVE_OR_LOGIN_SERVICE 004774 constant label dcl 636 ref 563 NOT_SLAVE_SERVICE 004633 constant label dcl 622 ref 559 OVERLAPPING_PRINTERS_AND_PUNCHES 005140 constant label dcl 650 ref 541 551 as_hasp_mpx_ 001025 constant entry external dcl 35 find_numeric_or_none_parameter 003614 constant entry internal dcl 445 ref 341 find_numeric_parameter 003523 constant entry internal dcl 416 ref 338 343 345 347 349 find_parameter 003267 constant entry internal dcl 355 ref 312 327 400 425 454 find_switch_parameter 003437 constant entry internal dcl 392 ref 319 321 323 325 hasp_cv_cmf 001727 constant entry external dcl 206 hasp_dump 001677 constant entry external dcl 197 hasp_load 001041 constant entry external dcl 103 hasp_wakeup_handler 001366 constant entry external dcl 155 ref 129 129 parse_subchannel_name 003716 constant entry internal dcl 479 ref 240 290 prepare_load_data 002326 constant entry internal dcl 251 ref 132 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6156 6224 5714 6166 Length 6646 5714 46 406 242 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME as_hasp_mpx_ 1110 external procedure is an external procedure. prepare_load_data internal procedure shares stack frame of external procedure as_hasp_mpx_. find_parameter internal procedure shares stack frame of external procedure as_hasp_mpx_. find_switch_parameter internal procedure shares stack frame of external procedure as_hasp_mpx_. find_numeric_parameter internal procedure shares stack frame of external procedure as_hasp_mpx_. find_numeric_or_none_parameter internal procedure shares stack frame of external procedure as_hasp_mpx_. parse_subchannel_name internal procedure shares stack frame of external procedure as_hasp_mpx_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 saved_cdtp as_hasp_mpx_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME as_hasp_mpx_ 000100 subchannel_list_ptr as_hasp_mpx_ 000102 system_area_ptr as_hasp_mpx_ 000104 code as_hasp_mpx_ 000105 mpx_channel_name as_hasp_mpx_ 000115 load_parameter_name as_hasp_mpx_ 000125 start_subchannel_name_idx as_hasp_mpx_ 000126 found_console as_hasp_mpx_ 000127 found_readers as_hasp_mpx_ 000137 found_printers as_hasp_mpx_ 000147 found_punches as_hasp_mpx_ 000157 idx as_hasp_mpx_ 000160 event_message_array as_hasp_mpx_ 000162 error as_hasp_mpx_ 000166 hasp_load_data_n_subchannels as_hasp_mpx_ 000170 hld_ptr as_hasp_mpx_ 000172 cdtp as_hasp_mpx_ 000174 cdtep as_hasp_mpx_ 000176 mpxep as_hasp_mpx_ 000200 event_call_info_ptr as_hasp_mpx_ 000224 additional_info_str prepare_load_data 000425 value prepare_load_data 000436 p prepare_load_data 000440 idx prepare_load_data 000452 idx find_parameter 000453 jdx find_parameter 000462 value find_switch_parameter 000472 value find_numeric_parameter 000476 numeric_value find_numeric_parameter 000506 value find_numeric_or_none_parameter 000512 numeric_value find_numeric_or_none_parameter 000522 p parse_subchannel_name 000524 name_part parse_subchannel_name 000526 number_part parse_subchannel_name 000530 device_number parse_subchannel_name 000531 name_lth parse_subchannel_name THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_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_op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_ipc_code_ get_process_id_ get_system_free_area_ 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 35 001024 38 001032 103 001033 106 001062 107 001072 109 001077 110 001102 111 001106 113 001107 114 001111 115 001117 117 001121 120 001136 121 001150 122 001152 123 001161 125 001214 126 001217 129 001220 130 001244 132 001246 134 001247 135 001276 137 001304 139 001306 142 001307 146 001345 150 001357 151 001362 155 001363 158 001373 160 001377 161 001402 162 001404 164 001406 166 001427 167 001432 169 001466 172 001467 174 001473 175 001502 177 001535 180 001536 183 001574 186 001621 189 001637 193 001671 197 001672 200 001720 202 001721 206 001722 209 001746 210 001751 211 001754 212 001764 213 001770 218 001775 221 002052 227 002122 231 002171 233 002205 234 002206 238 002236 240 002245 241 002255 244 002257 247 002325 251 002326 259 002327 260 002332 262 002364 265 002365 267 002366 270 002377 271 002402 277 002405 279 002420 280 002421 284 002452 286 002461 288 002463 290 002470 292 002506 297 002510 301 002530 302 002551 303 002553 306 002612 309 002613 312 002616 315 002637 319 002647 321 002670 323 002713 325 002736 327 002762 330 003003 333 003014 336 003023 338 003025 341 003053 343 003112 345 003145 347 003200 349 003231 351 003266 355 003267 362 003305 363 003332 366 003337 368 003343 369 003346 372 003350 373 003367 376 003370 378 003373 379 003412 381 003417 384 003422 386 003434 392 003437 400 003450 405 003510 410 003522 416 003523 425 003534 427 003561 430 003574 431 003604 434 003612 437 003613 445 003614 454 003625 456 003652 457 003657 458 003662 461 003663 464 003676 465 003706 468 003714 471 003715 479 003716 491 003720 493 003723 494 003737 496 003743 498 003751 500 003766 502 003767 508 004013 511 004022 514 004025 516 004027 517 004042 518 004052 524 004057 527 004066 528 004070 529 004073 531 004074 534 004103 535 004105 536 004110 538 004111 541 004120 544 004124 545 004127 546 004132 548 004133 551 004142 554 004146 555 004151 558 004154 559 004160 561 004166 563 004167 566 004200 568 004202 571 004206 575 004210 577 004212 582 004213 584 004217 586 004270 589 004272 591 004356 594 004360 597 004363 600 004414 603 004415 606 004465 609 004466 612 004472 614 004543 617 004545 619 004631 622 004633 625 004636 627 004706 630 004710 633 004772 636 004774 639 004777 641 005047 644 005051 647 005136 650 005140 653 005144 655 005173 658 005174 660 005240 ----------------------------------------------------------- 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