COMPILATION LISTING OF SEGMENT astty_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/20/88 1019.2 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 astty_: proc; 15 16 /* ASTTY_ - the Answering Service User Terminal IO Module (formerly aswa_) 17* this procedure provides an I/O-switch type write around 18* for the answering service. 19* 20* Originally, this program handled TTY, NET (old NCP), and G115 protocol. 21* Now, it only handles tty, by calling hcs_$tty_*. This removes the need 22* for an IOCB per channel. 23* 24* Initially coded by Michael J. Spier, March 2 1970. 25* Modified 7/22/71 by Edwin W. Meyer, Jr. to include calls for the ARPA Computer Network. 26* Test mode removed 11/72 THVV 27* Modified 750226 by PG to split astty_$tty_order into $tty_order and $tty_changemodes 28* Modified by T. Casey, November 1976 to have changemode check for old mode string too long and not return error code. 29* Modified by Robert Coren, July 1977, to process set_term_type order 30* Modified by Robert Coren, summer 1978, to use hcs_$tty_get_line and to add get_chars entry point 31* Modified August 1979 by Larry Johnson for getmodes entry. 32* Modified May 15 1981 by E. N. Kittlitz. tty_read maxlength changed from 100 to 300, 33* tty_order to return real status code for dial_out. 34* Modified February 1982 by E. N. Kittlitz for error_log, no_error_log entries. 35* Modified February 1983 by E. N. Kittlitz for selective tracing. 36* Modified 84-04-02 BIM. Removed all multiple "dim" support. 37* And fix code return to return -1 ONLY if channel is HUNG UP. 38* (io no permission). 39* Modified 1984-10-01 BIM to improve severity selection for tracing. 40* Now all tracing goes into the log. 41**/ 42 43 /****^ HISTORY COMMENTS: 44* 1) change(86-05-13,GJohnson), approve(86-05-13,MCR7387), 45* audit(86-05-13,Martinson), install(86-05-14,MR12.0-1055): 46* Correct error message documentation. 47* 2) change(87-03-17,LJAdams), approve(87-04-03,MCR7646), 48* audit(87-05-05,Gilcrease), install(87-05-14,MR12.1-1030): 49* Changed ttd_version to ttd_version_3. 50* 3) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 51* audit(87-08-03,Parisek), install(87-08-04,MR12.1-1055): 52* Supports use of IOCBs when connecting to channels that cannot be 53* supported by tty_, ie, hasp operator subchannels when set for login 54* service. 55* END HISTORY COMMENTS */ 56 57 /* builtins */ 58 59 dcl (addr, codeptr, length, rtrim, substr, null) builtin; 60 61 /* external static */ 62 63 dcl error_table_$smallarg fixed bin (35) external static; 64 65 /* entries */ 66 67 dcl ioa_$rsnnl entry () options (variable); 68 dcl sys_log_ entry options (variable); 69 dcl sys_log_$error_log entry options (variable); 70 dcl ttt_info_$terminal_data entry (char (*), fixed bin, fixed bin, ptr, fixed bin (35)); 71 dcl hcs_$tty_abort entry (fixed bin, fixed bin, fixed bin, fixed bin (35)); 72 dcl hphcs_$tty_write_force entry (fixed bin, ptr, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (35)); 73 dcl hcs_$tty_detach entry (fixed bin, fixed bin, fixed bin, fixed bin (35)); 74 dcl hcs_$tty_detach_new_proc entry (fixed bin, bit (36) aligned, fixed bin, fixed bin (35)); 75 dcl hcs_$tty_event entry (fixed bin, fixed bin (71), fixed bin, fixed bin (35)); 76 dcl hcs_$tty_index entry (char (*) aligned, fixed bin, fixed bin, fixed bin (35)); 77 dcl hcs_$tty_order entry (fixed bin, char (*), ptr, fixed bin, fixed bin (35)); 78 dcl hcs_$tty_read entry (fixed bin, ptr, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (35)); 79 dcl hcs_$tty_get_line entry (fixed bin, ptr, fixed bin, fixed bin, fixed bin, bit (1), fixed bin, fixed bin (35)); 80 dcl hcs_$tty_state entry (fixed bin, fixed bin, fixed bin (35)); 81 dcl hcs_$tty_write entry (fixed bin, ptr, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (35)); 82 dcl iox_$attach_ptr entry (ptr, char (*), ptr, fixed bin (35)); 83 dcl iox_$close entry (ptr, fixed bin (35)); 84 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 85 dcl iox_$destroy_iocb entry (ptr, fixed bin (35)); 86 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 87 dcl iox_$find_iocb entry (char (*), ptr, fixed bin (35)); 88 dcl iox_$get_chars entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 89 dcl iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 90 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 91 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 92 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 93 94 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 95 96 dcl el_severity fixed bin int static init (0); 97 dcl trace_sw bit (1) aligned int static init ("0"b); 98 dcl trace_error_sw bit (1) aligned int static init ("0"b); 99 dcl trace_call_sw bit (1) aligned int static init ("0"b); 100 dcl trace_select_sw bit (1) aligned int static init ("0"b); 101 dcl trace_select_channel char (32) varying int static init (""); 102 dcl trace_io_sw bit (1) aligned int static init ("0"b); 103 104 /* automatic */ 105 106 dcl (nelem, nelemt, offset) fixed bin; 107 dcl (iox_nelem, iox_nelemt) fixed bin (21); 108 dcl iox_code fixed bin (35); 109 dcl nl_found bit (1); 110 dcl obsolete bit (1) aligned; 111 dcl entrypoint char (9); 112 dcl changemode_entry bit (1); 113 dcl iocb_ptr ptr; 114 dcl order_name char (32); 115 dcl order_ptr ptr; 116 dcl io_linel fixed bin (21); 117 dcl line_status_storage bit (72) aligned; 118 dcl ME char (6) int static init ("astty_") options (constant); 119 120 121 dcl 1 terminal_data like terminal_type_data; 122 123 dcl 1 modes aligned, /* for order (modes) call */ 124 2 size fixed bin, 125 2 string char (512) unal; 126 127 /* based */ 128 129 dcl io_line char (io_linel) based (mp); 130 131 /* error table */ 132 133 dcl error_table_$io_no_permission fixed bin (35) ext static; 134 dcl error_table_$mpx_down fixed bin (35) ext static; 135 dcl error_table_$line_status_pending fixed bin (35) ext static; 136 dcl error_table_$not_a_valid_iocb fixed bin (35) ext static; 137 138 /* ============================================================= */ 139 140 /* TTY_INDEX - ATTACH THE DEVICE SPECIFIED BY "NAME" AND ASSIGN IT A DEVICE INDEX */ 141 142 tty_index: entry (p, code); 143 144 dcl p ptr parameter; 145 dcl code fixed bin (35) parameter; 146 147 code = 0; 148 cdtep = p; /* copy ptr */ 149 150 if cdte.use_iocb then 151 if cdte.iocbp = null () then call create_iocb; 152 153 call hcs_$tty_index (cdte.name, cdte.twx, cdte.state, code); 154 155 call print_num ("index", cdte.twx); 156 go to check_state_return; 157 158 /* TTY_EVENT - ASSOCIATE THE DEVICE WITH AN EVENT CHANNEL NAME */ 159 160 tty_event: entry (p, code); 161 162 call validate_cdte ("event"); 163 164 if cdte.use_iocb then do; 165 call iox_$control ((cdte.iocbp), "set_event_channel", addr (cdte.event), iox_code); 166 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 167 if code = 0 then code = iox_code; /* give precedence to state control order */ 168 end; 169 else call hcs_$tty_event (cdte.twx, cdte.event, cdte.state, code); 170 171 call print ("event"); 172 cdte.wakeup_handler = ""b; /* assume dialup_ handles wakeups */ 173 go to check_state_return; 174 175 176 /* TTY_CHANGEMODE - SET THE DEVICE MODES */ 177 178 tty_changemode: 179 entry (p, bv_new_modes, code); 180 181 /* parameters to tty_changemode */ 182 183 dcl bv_new_modes char (*) unaligned parameter; 184 185 changemode_entry = "1"b; 186 changemode_join: 187 call validate_cdte ("changemode"); 188 189 modes.size = length (modes.string); /* set maximum returned length */ 190 if changemode_entry then modes.string = bv_new_modes; /* set new modes */ 191 else modes.string = ""; 192 re_mode: 193 if cdte.use_iocb 194 then do; 195 call iox_$modes ((cdte.iocbp), modes.string, "", iox_code); 196 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 197 if code = 0 then code = iox_code; /* give precedence to state control order */ 198 end; 199 else call hcs_$tty_order (cdte.twx, "modes", addr (modes), cdte.state, code); 200 call check_line_status (re_mode, "changemode"); 201 if code ^= 0 then 202 if code = error_table_$smallarg then /* ... not enough room for returned mode string */ 203 code = 0; 204 205 if ^changemode_entry then do; 206 bv_modes = modes.string; 207 call print ("getmode"); 208 end; 209 else call print_arg ("changemode", bv_new_modes); 210 go to check_state_return; 211 212 213 /* TTY_GETMODE - GET THE DEVICE MODES */ 214 215 tty_getmode: 216 entry (p, bv_modes, code); 217 218 dcl bv_modes char (*); 219 220 changemode_entry = "0"b; 221 go to changemode_join; 222 223 224 /* TTY_ORDER - REQUEST MISCELLANEOUS DEVICE-DEPENDENT FUNCTIONS */ 225 226 tty_order: 227 entry (p, bv_order, bv_order_ptr, code); 228 229 /* parameters to tty_order */ 230 231 dcl (bv_order char (*), 232 bv_order_ptr ptr) parameter; 233 234 call validate_cdte ("order"); 235 order_ptr = bv_order_ptr; 236 order_name = bv_order; 237 238 if ^cdte.use_iocb & (order_name = "set_term_type") 239 then do; /* imitate tty_ for this one */ 240 terminal_data.version = ttd_version_3; 241 call ttt_info_$terminal_data (order_ptr -> set_term_type_info.name, (cdte.line_type), 242 (cdte.baud_rate), addr (terminal_data), code); 243 if code ^= 0 then do; 244 call sys_log_$error_log (el_severity, code, ME, 245 "^a has undefined terminal type ^a for set_term_type order.", 246 cdte.name, order_ptr -> set_term_type_info.name); 247 go to general_return; 248 end; 249 250 order_name = "set_terminal_data"; 251 order_ptr = addr (terminal_data); 252 end; 253 254 re_order: 255 call print_arg ("order", bv_order); 256 257 if cdte.use_iocb 258 then do; 259 call iox_$control ((cdte.iocbp), order_name, order_ptr, iox_code); 260 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 261 if code = 0 then code = iox_code; /* give precedence to state control order */ 262 end; 263 else call hcs_$tty_order (cdte.twx, order_name, order_ptr, cdte.state, code); 264 call check_line_status (re_order, "order"); 265 266 if order_name = "hangup" then 267 if cdte.use_iocb then do; 268 call destroy_iocb; 269 call create_iocb; 270 call hcs_$tty_index (cdte.name, cdte.twx, cdte.state, code); 271 end; 272 273 go to check_state_return; 274 275 /* TTY_STATE - GET THE STATE OF THE DEVICE */ 276 277 tty_state: entry (p, code); 278 279 call validate_cdte ("state"); 280 281 if cdte.use_iocb 282 then do; 283 if cdte.iocbp = null () then do; 284 cdte.state = 0; /* channel not set up yet */ 285 code = 0; 286 end; 287 else do; 288 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 289 if code = error_table_$not_a_valid_iocb 290 then do; /* should not happen but just in case */ 291 cdte.state = 0; 292 cdte.iocbp = null (); 293 code = 0; 294 end; 295 end; 296 end; 297 else call hcs_$tty_state (cdte.twx, cdte.state, code); 298 299 call print_num ("state", cdte.state); 300 301 /* Error code processing is different here ! */ 302 303 if code = error_table_$io_no_permission | code = error_table_$mpx_down /* twx valid, but noone home */ 304 then do; 305 code = 0; /* we can report a legitimate and accurate state */ 306 if cdte.state > TTY_HUNG 307 then do; 308 call sys_log_ (el_severity, "^a: tty_state returned ^d for hung-up line ^a.", ME, cdte.state, cdte.name); 309 cdte.state = 0; /* Lie, to get good results. */ 310 end; 311 end; 312 return; /* we assume state is 0 or -1 in the io_no_permission case */ 313 314 315 /* TTY_ABORT - ABORT ALL PENDING I/O ON THE DEVICE */ 316 317 tty_abort: entry (p, abortflag, code); 318 319 dcl abortflag fixed bin; 320 321 call validate_cdte ("abort"); 322 re_abort: 323 if cdte.use_iocb 324 then do; 325 if abortflag = 1 | abortflag = 3 /* reset read */ 326 then do; 327 call iox_$control ((cdte.iocbp), "resetread", null (), iox_code); 328 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 329 if code = 0 then code = iox_code; /* give precedence to state control order */ 330 if code ^= 0 then go to bad_abort; 331 end; 332 333 if abortflag = 2 | abortflag = 3 /* reset write */ 334 then do; 335 call iox_$control ((cdte.iocbp), "resetwrite", null (), iox_code); 336 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 337 if code = 0 then code = iox_code; /* give precedence to state control order */ 338 end; 339 end; 340 else call hcs_$tty_abort (cdte.twx, abortflag, cdte.state, code); 341 342 bad_abort: 343 call check_line_status (re_abort, "abort"); 344 call print_num ("abort", abortflag); 345 go to check_state_return; 346 347 348 /* TTY_GET_CHARS - READ WHATEVER INPUT IS AVAILABLE */ 349 350 tty_get_chars: entry (p, mp, ml, code); 351 352 nelem = 300; 353 nelemt = 0; 354 offset = 0; 355 ml = 0; /* safe */ 356 call validate_cdte ("get_chars"); 357 entrypoint = "get_chars"; 358 359 re_get_chars: 360 if cdte.use_iocb 361 then do; 362 iox_nelem = nelem; 363 call iox_$get_chars ((cdte.iocbp), mp, iox_nelem, iox_nelemt, iox_code); 364 nelemt = iox_nelemt; 365 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 366 if code = 0 then code = iox_code; /* give precedence to state control order */ 367 end; 368 else call hcs_$tty_read (cdte.twx, mp, offset, nelem, nelemt, cdte.state, code); 369 call check_line_status (re_get_chars, "get_chars"); 370 go to trace_read; 371 372 373 /* TTY_READ - READ IN A LINE FROM THE DEVICE */ 374 375 tty_read: entry (p, mp, ml, code); 376 377 dcl mp ptr, ml fixed bin; 378 379 nelem = 300; /* min(ftp_dialup_ buff size, dialup_ buff size) */ 380 nelemt = 0; 381 offset = 0; 382 ml = 0; 383 entrypoint = "read"; 384 call validate_cdte ("read"); 385 386 re_get_line: 387 if cdte.use_iocb 388 then do; 389 iox_nelem = nelem; 390 call iox_$get_line ((cdte.iocbp), mp, iox_nelem, iox_nelemt, iox_code); 391 nelemt = iox_nelemt; 392 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 393 if code = 0 then code = iox_code; /* give precedence to state control order */ 394 end; 395 else call hcs_$tty_get_line (cdte.twx, mp, offset, nelem, nelemt, nl_found, cdte.state, code); 396 call check_line_status (re_get_line, "read"); 397 398 trace_read: 399 call print_num (entrypoint, nelemt); 400 if trace_io_sw then do; 401 io_linel = nelemt; 402 call print_arg (entrypoint, io_line); 403 end; 404 ml = nelemt; 405 go to check_state_return; 406 407 408 /* TTY_WRITE - write out a line on the device. */ 409 410 tty_write: entry (p, mp, mo, ml1, mt, code); 411 412 dcl (mo, ml1, mt) fixed bin; 413 dcl based_chars (0:1) char (1) based unal; /* used for bumping string pointers */ 414 dcl data_ptr pointer; 415 416 mt = 0; 417 call validate_cdte ("write"); 418 re_write: 419 if cdte.use_iocb 420 then do; 421 data_ptr = addr (mp -> based_chars (mo)); 422 iox_nelem = ml1; 423 call iox_$put_chars ((cdte.iocbp), data_ptr, iox_nelem, iox_code); 424 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 425 if code = 0 then code = iox_code; /* give precedence to state control order */ 426 if code = 0 then mt = ml1; 427 end; 428 else call hcs_$tty_write (cdte.twx, mp, mo, ml1, mt, cdte.state, code); 429 call check_line_status (re_write, "write"); 430 431 call print_num ("write", ml1); 432 if trace_io_sw then do; 433 io_linel = ml1; 434 call print_arg ("write", io_line); 435 end; 436 437 go to check_state_return; 438 439 /* TTY_FORCE - WRITE OUT A LINE ON THE DEVICE (use special "force" mode) */ 440 441 tty_force: entry (p, mp, ml, code); 442 443 nelem = ml; 444 nelemt = 0; 445 offset = 0; 446 447 call validate_cdte ("force"); 448 449 re_write_force: 450 if cdte.use_iocb 451 then do; /* this will work on a well configured system */ 452 iox_nelem = nelem; 453 call iox_$put_chars ((cdte.iocbp), mp, iox_nelem, iox_code); 454 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 455 if code = 0 then code = iox_code; /* give precedence to state control order */ 456 if code = 0 then nelemt = nelem; 457 end; 458 else call hphcs_$tty_write_force (cdte.twx, mp, offset, nelem, nelemt, cdte.state, code); 459 call check_line_status (re_write_force, "write_force"); 460 461 call print_num ("force_write", nelem); 462 if trace_io_sw then do; 463 io_linel = nelem; 464 call print_arg ("force_write", io_line); 465 end; 466 467 if nelemt = ml then return; 468 if cdte.use_iocb then go to check_state_return; /* one chance only for IOCBs */ 469 re_force_abort: 470 call hcs_$tty_abort (cdte.twx, 2, cdte.state, code); 471 call check_line_status (re_force_abort, "write_force(abort)"); 472 re_write_force_2: 473 call hphcs_$tty_write_force (cdte.twx, mp, offset, nelem, nelemt, cdte.state, code); 474 call check_line_status (re_write_force_2, "write_force(2)"); 475 go to check_state_return; 476 477 /* TTY_DETACH - DETACH THE DEVICE AND MAKE IT UNKNOWN (AND AVAILABLE) */ 478 479 tty_detach: entry (p, detachflag, code); 480 481 dcl detachflag fixed bin; 482 dcl dflag fixed bin; 483 484 call validate_cdte ("detach"); 485 486 if cdte.use_iocb & cdte.iocbp ^= null () then do; 487 dflag = detachflag; 488 call iox_$control ((cdte.iocbp), "detach_user_process", addr (dflag), iox_code); 489 if iox_code ^= 0 then /* need to try all possible avenues to get into hcs_$tty_detach */ 490 call hcs_$tty_detach (cdte.twx, detachflag, cdte.state, iox_code); 491 492 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 493 if code = 0 then code = iox_code; /* give precedence to state control order */ 494 call destroy_iocb (); 495 end; 496 else call hcs_$tty_detach (cdte.twx, detachflag, cdte.state, code); 497 498 call print_num ("detach", detachflag); 499 return; 500 501 /* TTY_NEW_PROC - force tty to attach to new process */ 502 503 tty_new_proc: entry (p, pid, code); 504 505 dcl pid bit (36) aligned; 506 507 call validate_cdte ("new_proc"); 508 if cdte.use_iocb 509 then do; 510 call iox_$control ((cdte.iocbp), "assign_to_user_process", addr (pid), iox_code); 511 call iox_$control ((cdte.iocbp), "state", addr (cdte.state), code); 512 if code = 0 then code = iox_code; /* give precedence to state control order */ 513 end; 514 else call hcs_$tty_detach_new_proc (cdte.twx, pid, cdte.state, code); 515 call print ("new_proc"); 516 go to check_state_return; 517 518 /* Trace package */ 519 520 trace_on: entry; 521 522 dcl cu_$arg_count entry entry (fixed bin, fixed bin (35)); 523 dcl cu_$arg_ptr entry entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 524 dcl argc fixed bin; 525 dcl argp ptr; 526 dcl argl fixed bin (21); 527 dcl arg char (argl) based (argp); 528 529 trace_io_sw = "0"b; 530 go to trace_join; 531 532 trace_io: entry; 533 trace_io_sw = "1"b; 534 535 trace_join: 536 trace_sw = "1"b; /* tracing or logging */ 537 trace_call_sw = "1"b; /* definitely tracing */ 538 trace_select_sw = "0"b; 539 call cu_$arg_count (argc, (0)); 540 if argc = 0 then go to trace_report_return; 541 call cu_$arg_ptr (1, argp, argl, (0)); 542 trace_select_sw = "1"b; 543 trace_select_channel = arg; 544 545 trace_report_return: 546 call sys_log_ (SL_LOG, "^a: tracing is ^[on^[ for channel ^a^;^s^].^;off. ^2sError logging is ^[on, severity ^d^;off^].^]", 547 ME, trace_call_sw, trace_select_sw, trace_select_channel, trace_sw, el_severity); 548 return; 549 550 trace_off: entry; 551 trace_call_sw = "0"b; /* no more tracing */ 552 trace_io_sw = "0"b; 553 trace_sw = trace_error_sw; /* are we still error logging? */ 554 go to trace_report_return; 555 556 log_error: entry; 557 el_severity = SL_LOG_SILENT; 558 go to log_error_join; 559 560 log_error_1: entry; 561 el_severity = SL_LOG; 562 563 log_error_join: 564 trace_sw = "1"b; /* logging or tracing */ 565 trace_error_sw = "1"b; /* definitely error logging */ 566 go to trace_report_return; 567 568 no_log_error: entry; 569 trace_error_sw = "0"b; /* no more error logging */ 570 trace_sw = trace_call_sw; /* still tracing? */ 571 go to trace_report_return; 572 573 /* Internal procedures used to write out tracing messages and log errors. */ 574 575 print: proc (chars); 576 577 dcl chars char (*); 578 dcl lsv fixed bin; 579 dcl trace_it bit (1) aligned; 580 581 call should_trace (lsv, trace_it); 582 if ^trace_it then return; 583 call sys_log_$error_log (lsv, code, ME, "^a ^d ^a", cdte.name, cdte.state, chars); 584 585 end print; 586 587 588 print_arg: 589 procedure (bv_arg1, bv_arg2); 590 591 dcl (bv_arg1, bv_arg2) char (*) unaligned parameter; 592 dcl lsv fixed bin; 593 dcl trace_it bit (1) aligned; 594 595 call should_trace (lsv, trace_it); 596 if ^trace_it then return; 597 call sys_log_$error_log (lsv, code, ME, "^a ^d ^a ^a", cdte.name, cdte.state, bv_arg1, bv_arg2); 598 599 end print_arg; 600 601 602 print_num: 603 procedure (bv_arg1, bv_arg2); 604 605 dcl (bv_arg1 char (*) unaligned, 606 bv_arg2 fixed bin) parameter; 607 608 dcl eleven_digits picture "-----------9"; /* 11 digits plus sign */ 609 610 dcl verify builtin; 611 612 dcl idx fixed bin; 613 614 if ^trace_call_sw & code = 0 then return; /* nothing to do */ 615 eleven_digits = bv_arg2; /* convert to characters */ 616 idx = verify (eleven_digits, " "); 617 if idx = 0 then idx = 1; /* if no blanks present, use whole string */ 618 619 call print_arg (bv_arg1, substr (eleven_digits, idx)); 620 621 end print_num; 622 623 624 should_trace: proc (lsv, trace_it); 625 dcl lsv fixed bin; 626 dcl trace_it bit (1) aligned; 627 628 should_trace_channel: proc returns (bit (1) aligned); 629 if ^trace_call_sw then return ("0"b); 630 else if trace_select_sw then /* the beginning of this channel's name */ 631 return (trace_select_channel = substr (cdte.name, 1, length (trace_select_channel))); 632 else return ("1"b); 633 634 end should_trace_channel; 635 636 trace_it = "0"b; 637 if ^trace_sw 638 then return; 639 trace_it = "1"b; 640 if code ^= 0 & trace_error_sw then /* we want to log error */ 641 if trace_call_sw then 642 if should_trace_channel () then lsv = SL_LOG; /* also tracing, make it print */ 643 else trace_it = ""b; 644 else lsv = el_severity; /* error trace, let user decide if we print */ 645 else do; 646 trace_it = should_trace_channel (); 647 lsv = SL_LOG_SILENT; /* no error log, just trace */ 648 end; 649 return; 650 end should_trace; 651 652 /* Checks for line status or hungup characters */ 653 654 check_line_status: 655 procedure (retry_label, caller); 656 657 declare retry_label label local; 658 declare acode fixed bin (35); 659 declare caller char (32); 660 declare octalstatus char (24); 661 662 if code = 0 then return; 663 if code ^= error_table_$line_status_pending 664 then do; 665 if code = error_table_$io_no_permission | code = error_table_$mpx_down | cdte.state <= TTY_HUNG 666 then 667 HUNG_UP: do; 668 if cdte.state > TTY_HUNG then 669 call sys_log_$error_log (el_severity, code, ME, 670 "^a state ^d > TTY_HUNG on hung-up error code.", cdte.name, cdte.state); 671 672 code = -1; /* dialup_ expects this */ 673 call destroy_iocb (); 674 go to general_return; 675 end; 676 call print_arg (caller, "ERROR"); 677 go to general_return; 678 end; 679 call hcs_$tty_order (cdte.twx, "line_status", addr (line_status_storage), 680 cdte.state, 681 acode); 682 if acode ^= 0 then do; /* if we got line_status_pending, we had to be dialed up */ 683 if acode = error_table_$io_no_permission | code = error_table_$mpx_down 684 | cdte.state <= TTY_HUNG 685 then go to HUNG_UP; 686 call sys_log_$error_log (el_severity, acode, ME, 687 "^a ^d line_status failed after line_status_pending", cdte.name, cdte.state); 688 code = acode; 689 go to general_return; 690 end; 691 692 octalstatus = ""; 693 call ioa_$rsnnl ("^o", octalstatus, (0), line_status_storage); 694 call print_arg ("line_status", octalstatus); 695 go to retry_label; 696 end check_line_status; 697 698 create_iocb: 699 procedure; /* the cdte.iocbp is expected to be null */ 700 701 call iox_$find_iocb ((cdte.name), iocb_ptr, code); 702 if code ^= 0 then do; 703 call sys_log_$error_log (el_severity, code, ME, "error finding an IOCB for channel ^a.", 704 cdte.name); 705 cdte.state = 0; 706 goto general_return; 707 end; 708 709 cdte.iocbp = iocb_ptr; 710 711 call iox_$attach_ptr ((cdte.iocbp), 712 "hasp_stream_ -target hasp_workstation_ -device teleprinter -no_block -comm hasp -tty " || 713 rtrim (cdte.name) || " -suppress_dial_manager", codeptr (astty_), code); 714 if code ^= 0 then do; 715 call sys_log_$error_log (el_severity, code, ME, "error attaching IOCB for channel ^a.", 716 cdte.name); 717 cdte.state = 0; 718 call iox_$destroy_iocb ((cdte.iocbp), (0)); 719 cdte.iocbp = null (); 720 goto general_return; 721 end; 722 723 call iox_$open ((cdte.iocbp), Stream_input_output, obsolete, code); 724 if code ^= 0 then do; 725 call sys_log_$error_log (el_severity, code, ME, "error opening IOCB for channel ^a.", 726 cdte.name); 727 cdte.state = 0; 728 call iox_$detach_iocb ((cdte.iocbp), (0)); 729 call iox_$destroy_iocb ((cdte.iocbp), (0)); 730 cdte.iocbp = null (); 731 goto general_return; 732 end; 733 734 end create_iocb; 735 736 destroy_iocb: 737 procedure; 738 739 if cdte.use_iocb then 740 if cdte.iocbp ^= null () then do; 741 call iox_$close ((cdte.iocbp), (0)); /* get rid of IOCB */ 742 call iox_$detach_iocb ((cdte.iocbp), (0)); 743 call iox_$destroy_iocb ((cdte.iocbp), (0)); 744 cdte.iocbp = null (); 745 end; 746 747 end destroy_iocb; 748 749 validate_cdte: 750 procedure (caller); 751 752 declare caller char (32); 753 754 code = 0; 755 cdtep = p; 756 if (cdte.use_iocb & cdte.iocbp = null () & ^(caller = "state" | caller = "detach")) 757 | (^cdte.use_iocb & cdte.twx = 0) then do; /* not currently valid channel */ 758 cdte.state = TTY_HUNG; 759 code = -1; 760 call destroy_iocb (); 761 call print_arg (caller, "call with invalid cdte"); 762 go to general_return; 763 end; 764 return; 765 end validate_cdte; 766 767 general_return: 768 return; 769 770 check_state_return: /* one last chance to note hangup */ 771 772 /**** The contract between us, the hardcore, and dialup_ is complex. 773* tty_index will return io_no_permission if the channel is 774* TTY_MASKED, TTY_HUNG_UP (TTY_HUNG) or TTY_LISTENING (TTY_KNOWN). 775* dialup_ wants to hear a -1 under the same conditions. 776* The fact that the channel is not dialed up takes precedence 777* over any other error, since it conditions dialup_'s handling 778* of the error. 779* 780* This code might do the wrong thing if the line is TTY_KNOWN 781* and the operation was valid in that state. 782**/ 783 784 if code ^= 0 then 785 if cdte.state <= TTY_HUNG | code = error_table_$io_no_permission | code = error_table_$mpx_down 786 then do; 787 if cdte.state > TTY_HUNG 788 then call sys_log_$error_log (el_severity, code, ME, 789 "^a ^d state > TTY_HUNG on hung-up error code.", cdte.name, cdte.state); 790 code = -1; 791 call destroy_iocb; 792 end; 793 return; 794 795 796 /* BEGIN MESSAGE DOCUMENTATION 797* 798* Message: 799* astty_: ERROR_TABLE_MESSAGE CHANNEL has undefined terminal type TERM_TYPE for set_term_type order. 800* 801* S: $as0 or $as1 802* 803* T: $run 804* 805* M: The system received the ERROR_TABLE_MESSAGE when an attempt was made 806* to set the terminal type of CHANNEL to TERM_TYPE. 807* Suspect the terminal type is not known on to the system. The set_term_type 808* control order was ignored. 809* 810* A: $inform 811* 812* Message: 813* astty_: tty_state returned SSSS for hung-up line CHANNEL. 814* 815* S: $as0 or $as1 816* 817* T: $run 818* 819* M: In processing the astty_$tty_state entry, a call to hcs_$tty_state 820* returned a state value of SSSS for hung-up 821* CHANNEL which indicates that the channel is active. However, the returned 822* error code indicated that the channel is hung-up. The channel will be 823* hungup. 824* 825* A: $inform 826* 827* Message: 828* astty_: ERROR_TABLE_MESSAGE CHANNEL state SSSS > TTY_HUNG on hung-up error code. 829* 830* S: $as0 or $as1 831* 832* T: $run 833* 834* M: An error code of ERROR_TABLE_MESSAGE was returned while 835* servicing CHANNEL indicating that the channel is not useable. However, the 836* state SSSS of the channel indicates that the channel was active, thus the 837* CHANNEL state is inconsistant. The channel will be hungup. 838* 839* A: $inform 840* 841* Message: 842* astty_: ERROR_TABLE_MESSAGE CHANNEL SSSS line_status failed after line_status_pending 843* 844* S: $as0 or $as1 845* 846* T: $run 847* 848* M: System received the ERROR_TABLE_MESSAGE when it tried to do a line 849* status control order on CHANNEL in state SSSS after it received a 850* line_status_pending error code. The error code for ERROR_TABLE_MESSAGE was 851* returned back to the caller. 852* 853* A: $inform 854* 855* Message: 856* astty_: ERROR_TABLE_MESSAGE error finding an IOCB for channel CCCC. 857* 858* S: $as0 or $as1 859* 860* T: $run 861* 862* M: The system received the ERROR_TABLE_MESSAGE when it attempted to find 863* an IOCB for channel CCCC. The channel was then hungup. 864* 865* A: $inform 866* 867* Message: 868* astty_: ERROR_TABLE_MESSAGE error attaching IOCB for channel CCCC. 869* 870* S: $as0 or $as1 871* 872* T: $run 873* 874* M: The system received the ERROR_TABLE_MESSAGE attempting to attach to 875* channel CCCC using an IOCB. The channel was then hungup. 876* 877* A: $inform 878* 879* Message: 880* astty_: ERROR_TABLE_MESSAGE error opening IOCB for channel CCCC. 881* 882* S: $as0 or $as1 883* 884* T: $run 885* 886* M: The system received the ERROR_TALE_MESSAGE attemping to open the 887* channel CCCC using an IOCB. The channel was then hungup. 888* 889* A: $inform 890* 891* Message: 892* astty_: ERROR_TABLE_MESSAGE CHANNEL NN TEXT 893* 894* S: $as0 or $as1 895* 896* T: $run 897* 898* M: This is tracing or error logging output. 899* This output may appear in the AS log, or be printed on the severity1 stream 900* as directed by astty_ trace and log_error requests described below. 901* 902* A: $ignore 903* Tracing and logging is controlled by the following entries, which 904* may be typed as commands in admin mode. 905* .br 906* astty_$trace - causes tracing of all calls to astty_ 907* .br 908* astty_$notrace - disables tracing 909* .br 910* astty_$log_error - logs calls to astty_ that get errors. does not print. 911* .br 912* astty_$log_error_1 - logs and prints calls to astty_ that get errors. 913* .br 914* astty_$no_log_error - disables error logging. 915* .br 916* 917* END MESSAGE DOCUMENTATION */ 918 919 1 1 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 1 2 1 3 /* This include file declares the "author" substructure 1 4* in a form suitable for using the PL/I "like" attribute. 1 5* 1 6* Written 750304 by PG 1 7**/ 1 8 1 9 dcl 1 author_dcl aligned based, 2 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 2 2 2 3 /* the "author" items must always be the first ones in the table. The 2 4* module which moves the converted table to the System Control process 2 5* fills in these data items and assumes them to be at the head of the segment 2 6* regardless of the specific table's actual declaration. The variables 2 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 2 8* respectively. For tables installed in multiple processes, these 2 9* are to be used to lock out multiple installations. */ 2 10 2 11 /* Lock should be used as a modification lock. Since, in general, 2 12* entries may not be moved in system tables, even by installations, 2 13* it is sufficient for only installers and programs that change threads 2 14* to set or respect the lock. Simply updating data in an entry 2 15* requires no such protection. 2 16* 2 17* Last_install_time is used by readers of system tables to detect 2 18* installations or other serious modifications. By checking it before 2 19* and after copying a block of data, they can be protected against 2 20* modifications. 2 21* 2 22* Modules that set the lock should save proc_group_id, and then 2 23* put their group id there for the time they hold the lock. 2 24* if they do not actually install the, they should restore the group id. 2 25**/ 2 26 2 27 2 author aligned, /* validation data about table's author */ 2 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 2 29 3 lock bit (36), /* installation lock */ 2 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 2 31 3 update_authorization bit (1) unal, /* update only authorizations */ 2 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 2 33 3 pad bit (33) unaligned, 2 34 3 last_install_time fixed bin (71), 2 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 2 36 3 w_dir char (64), /* author's working directory */ 2 37 2 38 /* END INCLUDE FILE author.incl.pl1 */ 1 10 1 11 2 pad; 1 12 1 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 920 921 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 */ 922 923 5 1 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 5 2 5 3 /* format: style4 */ 5 4 5 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 5 6 5 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 5 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 5 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 5 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 5 11* WAIT_DISCARD_WAKEUP 5 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 5 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 5 14**/ 5 15 5 16 /****^ HISTORY COMMENTS: 5 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 5 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 5 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 5 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 22* Add named constants for instance tags. 5 23* END HISTORY COMMENTS */ 5 24 5 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 5 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 5 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 5 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 5 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 5 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 5 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 5 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 5 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 5 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 5 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 5 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 5 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 5 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 5 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 5 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 5 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 5 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 5 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 5 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 5 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 5 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 5 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 5 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 5 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 5 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 5 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 5 52 ) fixed bin internal static options (constant); 5 53 5 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 5 55 /* names of ute.destroy_flag values */ 5 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 5 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 5 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 5 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 5 60 "wait remove"); /* -13 */ 5 61 5 62 /* Values for "cdte.state", typewriter state. */ 5 63 5 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 5 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 5 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 5 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 5 68 ) fixed bin internal static options (constant); 5 69 5 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 5 71 /* names of cdte.state values */ 5 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 5 73 5 74 /* Values for "cdte.in_use" and "ate.active" */ 5 75 5 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 5 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 5 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 5 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 5 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 5 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 5 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 5 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 5 84 ) fixed bin internal static options (constant); 5 85 5 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 5 87 /* names of ute.active values */ 5 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 5 89 5 90 5 91 /**** Values for ute.tag */ 5 92 5 93 dcl (TAG_INTERACTIVE init("a"), 5 94 TAG_UFT init("f"), 5 95 TAG_ABSENTEE init("m"), 5 96 TAG_PROXY init("p"), 5 97 TAG_DAEMON init("z") 5 98 ) char(1) int static options(constant); 5 99 5 100 5 101 /**** Following are constants used to indicate to the process termination 5 102* handler the reason for the process termination. They are used by 5 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 5 104* uc_ls_destroy_request_. */ 5 105 5 106 dcl ( 5 107 PT_FPE initial (1), 5 108 PT_LOGOUT initial (4), 5 109 PT_NEW_PROC_AUTH initial (13), 5 110 PT_HANGUP initial (20), 5 111 PT_SHUTDOWN initial (21), 5 112 PT_BUMP initial (22), 5 113 PT_ALARM initial (23), 5 114 PT_DETACH initial (24), 5 115 PT_UNBUMP initial (25), 5 116 PT_OPERATOR_TERMINATE initial (27), 5 117 PT_DESTROY_REQUEST initial (30), 5 118 PT_NEW_PROC_REQUEST initial (31) 5 119 ) fixed bin (17) internal static options (constant); 5 120 5 121 /**** Values for ute.preempted: 5 122* -1 user unbumped after term signal sent 5 123* 0 user unbumped; ignore alarm___ 5 124* 1 value internally used in load_ctl_ 5 125* 2 user bumped; when alarm___ comes in, send term signal 5 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 5 127* signals come in 5 128* 4 user bumped; process sick, so destroy without sending term signal 5 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 5 130* termsgnl). */ 5 131 5 132 dcl ( 5 133 PREEMPT_UNBUMP initial (-1), 5 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 5 135 PREEMPT_LOAD_CTL initial (1), 5 136 PREEMPT_BUMPED initial (2), 5 137 PREEMPT_TERM_SENT initial (3), 5 138 PREEMPT_BUMPED_NO_TERM initial (4), 5 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 5 140 ) fixed bin (17) internal static options(constant); 5 141 5 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 5 143 "unbumped", 5 144 "not bumped, ignore alarm___", 5 145 "load_ctl_", 5 146 "bumped", 5 147 "bumped, trm_ sent", 5 148 "bumped without trm_", 5 149 "bumped, termsgnl received"); 5 150 5 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 924 925 6 1 /* Begin include file ..... iox_modes.incl.pl1 */ 6 2 6 3 /* Written by C. D. Tavares, 03/17/75 */ 6 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 6 5 6 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 6 7 ("stream_input", "stream_output", "stream_input_output", 6 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 6 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 6 10 "direct_input", "direct_output", "direct_update"); 6 11 6 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 6 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 6 14 6 15 dcl (Stream_input initial (1), 6 16 Stream_output initial (2), 6 17 Stream_input_output initial (3), 6 18 Sequential_input initial (4), 6 19 Sequential_output initial (5), 6 20 Sequential_input_output initial (6), 6 21 Sequential_update initial (7), 6 22 Keyed_sequential_input initial (8), 6 23 Keyed_sequential_output initial (9), 6 24 Keyed_sequential_update initial (10), 6 25 Direct_input initial (11), 6 26 Direct_output initial (12), 6 27 Direct_update initial (13)) fixed bin int static options (constant); 6 28 6 29 /* End include file ..... iox_modes.incl.pl1 */ 926 927 7 1 /* BEGIN INCLUDE FILE ... set_term_type_info.incl.pl1 */ 7 2 /* Created 7/18/77 by Robert Coren */ 7 3 /* Defines info structure for set_term_type order */ 7 4 7 5 dcl stti_version_1 fixed bin int static options (constant) init (1); 7 6 dcl sttip ptr; 7 7 7 8 dcl 1 set_term_type_info aligned based (sttip), 7 9 2 version fixed bin, 7 10 2 name char (32) unal, 7 11 2 flags unal, 7 12 3 send_initial_string bit (1), 7 13 3 set_modes bit (1), 7 14 3 ignore_line_type bit (1), 7 15 3 mbz bit (33); 7 16 7 17 /* END INCLUDE FILE ... set_term_type_info.incl.pl1 */ 928 929 8 1 /* BEGIN INCLUDE FiLE ... terminal_type_data.incl.pl1 */ 8 2 8 3 8 4 /****^ HISTORY COMMENTS: 8 5* 1) change(77-05-19,JStern), approve(), audit(), install(): 8 6* Created 8 7* Modified 8/14/79 by Robert Coren to convert to version 2 by adding 8 8* flow control parameters 8 9* 2) change(87-03-09,LJAdams), approve(87-04-03,MCR7646), 8 10* audit(87-05-05,Gilcrease), install(87-08-04,MR12.1-1056): 8 11* Change the ttd_version to ttd_version_3. Add the protocol field. 8 12* END HISTORY COMMENTS */ 8 13 8 14 8 15 dcl 1 terminal_type_data aligned based (ttdp), /* info structure for set_terminal_data order */ 8 16 2 version fixed bin, /* structure version */ 8 17 2 old_type fixed bin, /* old terminal type number, -1 => none */ 8 18 2 name char (32) unaligned, /* terminal type name */ 8 19 2 tables, 8 20 3 input_tr_ptr ptr, /* input translation table ptr */ 8 21 3 output_tr_ptr ptr, /* output translation table ptr */ 8 22 3 input_cv_ptr ptr, /* input conversion table ptr */ 8 23 3 output_cv_ptr ptr, /* output conversion table ptr */ 8 24 3 special_ptr ptr, /* special chars table ptr */ 8 25 3 delay_ptr ptr, /* delay table ptr */ 8 26 2 editing_chars unaligned, 8 27 3 erase char (1) unaligned, 8 28 3 kill char (1) unaligned, 8 29 2 framing_chars unaligned, 8 30 3 frame_begin char (1) unaligned, 8 31 3 frame_end char (1) unaligned, 8 32 2 flags unal, 8 33 3 keyboard_locking bit (1), /* ON to request keyboard locking and unlocking */ 8 34 3 input_timeout bit (1), 8 35 3 output_block_acknowledge bit (1), 8 36 3 mbz bit (15), 8 37 2 line_delimiter char (1) unal, 8 38 2 mbz bit (9) unal, 8 39 8 40 /* the remainder of this structure is only present if version is 2 or more */ 8 41 8 42 2 flow_control_chars unal, 8 43 3 input_suspend char (1), 8 44 3 input_resume char (1), 8 45 3 output_suspend_etb char (1), 8 46 3 output_resume_ack char (1), 8 47 2 output_buffer_size fixed bin, 8 48 8 49 /* the remainder of this structure is only present if version is 3 or more */ 8 50 2 protocol fixed bin; /* 0=NONE; 1=MOWSE */ 8 51 8 52 8 53 dcl ttdp ptr; /* ptr to terminal_type_data structure */ 8 54 dcl ttd_version_3 fixed bin int static options (constant) init (3); 8 55 /* current version of structure */ 8 56 8 57 8 58 /* END INCLUDE FILE ... terminal_type_data.incl.pl1 */ 930 931 9 1 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 9 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 9 7* Added sl_info structure and associated named constants for use in calling 9 8* sys_log_$general. 9 9* END HISTORY COMMENTS */ 9 10 9 11 9 12 /* format: style4 */ 9 13 9 14 dcl ( 9 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 9 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 9 17 SL_TYPE init (-1), /* type message */ 9 18 SL_LOG_SILENT init (0), /* log message */ 9 19 SL_LOG init (1), /* log & type message */ 9 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 9 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 9 22 ) fixed bin internal static options (constant); 9 23 9 24 dcl 1 sl_info aligned automatic, 9 25 2 version char(8), /* structure version */ 9 26 2 arg_list_ptr ptr, /* arg_list with values */ 9 27 2 loc, 9 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 9 29 /* These flags control where the corresponding data item is found.*/ 9 30 /* -1: data appears in the corresponding structure element below */ 9 31 /* 0: data is not present anywhere */ 9 32 /* +N: data is Nth item in argument list pointed to by */ 9 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 9 34 /* corresponding structure element. */ 9 35 /* if data = +N: */ 9 36 /* argN is data_ptr, argN+1 is data_len */ 9 37 /* if ioa_msg = +N: */ 9 38 /* argN+1, ... argLAST are arguments substituted into the */ 9 39 /* ioa_msg control string. The formatted msg is returned. */ 9 40 2 flags, 9 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 9 42 3 flags_pad bit(35) unal, 9 43 2 mode fixed bin, /* as-mode, command-mode */ 9 44 2 severity fixed bin, /* error severity */ 9 45 2 code fixed bin(35), /* error table code */ 9 46 2 caller char(65) varying, /* caller refname$entryname*/ 9 47 2 data, /* binary data ptr/length */ 9 48 3 data_ptr ptr, 9 49 3 data_lth fixed bin(21), 9 50 2 class char(10) varying, /* binary data class */ 9 51 2 ioa_msg char(500) varying; /* formatted message text */ 9 52 9 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 54 /* */ 9 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 9 56 /* their data types should be as shown in the structure above, except that */ 9 57 /* character strings should be char(*) nonvarying. */ 9 58 /* */ 9 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 60 9 61 /* value for sl_info.version */ 9 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 9 63 9 64 /* values for sl_info.mode */ 9 65 dcl (SL_INFO_as_mode init(1), 9 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 9 67 9 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 9 69 dcl (SL_INFO_arg_given_in_structure init(-1), 9 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 9 71 9 72 9 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 74 /* */ 9 75 /* The following static structures are commonly used in the Login Server */ 9 76 /* user control software. */ 9 77 /* */ 9 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 79 9 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 9 81 9 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 9 83 2 version char(8) init ("sl_info1"), 9 84 2 arg_list_ptr ptr init (null), 9 85 2 loc, 9 86 3 (mode init (-1), 9 87 severity init ( 1), 9 88 code init ( 2), 9 89 caller init (-1), 9 90 data init ( 0), 9 91 class init ( 0), 9 92 ioa_msg init ( 3)) fixed bin, 9 93 2 flags, 9 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 9 95 3 flags_pad bit(35) unal init ("0"b), 9 96 2 mode fixed bin init ( 1), 9 97 2 severity fixed bin init ( 0), 9 98 2 code fixed bin(35) init ( 0), 9 99 2 caller char(65) varying init (""), 9 100 2 data, 9 101 3 data_ptr ptr init (null), 9 102 3 data_lth fixed bin(21) init ( 0), 9 103 2 class char(10) varying init (""), 9 104 2 ioa_msg char(500) varying init (""); 9 105 9 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 9 107 9 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 9 109 2 version char(8) init ("sl_info1"), 9 110 2 arg_list_ptr ptr init (null), 9 111 2 loc, 9 112 3 (mode init (-1), 9 113 severity init ( 1), 9 114 code init ( 0), 9 115 caller init (-1), 9 116 data init ( 0), 9 117 class init ( 0), 9 118 ioa_msg init ( 2)) fixed bin, 9 119 2 flags, 9 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 9 121 3 flags_pad bit(35) unal init ("0"b), 9 122 2 mode fixed bin init ( 1), 9 123 2 severity fixed bin init ( 0), 9 124 2 code fixed bin(35) init ( 0), 9 125 2 caller char(65) varying init (""), 9 126 2 data, 9 127 3 data_ptr ptr init (null), 9 128 3 data_lth fixed bin(21) init ( 0), 9 129 2 class char(10) varying init (""), 9 130 2 ioa_msg char(500) varying init (""); 9 131 9 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 9 133 9 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 9 135 2 version char(8) init ("sl_info1"), 9 136 2 arg_list_ptr ptr init (null), 9 137 2 loc, 9 138 3 (mode init (-1), 9 139 severity init ( 1), 9 140 code init ( 0), 9 141 caller init (-1), 9 142 data init ( 0), 9 143 class init ( 0), 9 144 ioa_msg init ( 2)) fixed bin, 9 145 2 flags, 9 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 9 147 3 flags_pad bit(35) unal init ("0"b), 9 148 2 mode fixed bin init ( 1), 9 149 2 severity fixed bin init ( 0), 9 150 2 code fixed bin(35) init ( 0), 9 151 2 caller char(65) varying init (""), 9 152 2 data, 9 153 3 data_ptr ptr init (null), 9 154 3 data_lth fixed bin(21) init ( 0), 9 155 2 class char(10) varying init (""), 9 156 2 ioa_msg char(500) varying init (""); 9 157 9 158 9 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 9 160 9 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 9 162 2 version char(8) init ("sl_info1"), 9 163 2 arg_list_ptr ptr init (null), 9 164 2 loc, 9 165 3 (mode init (-1), 9 166 severity init ( 1), 9 167 code init ( 2), 9 168 caller init (-1), 9 169 data init ( 0), 9 170 class init ( 0), 9 171 ioa_msg init ( 4)) fixed bin, 9 172 2 flags, 9 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 9 174 3 flags_pad bit(35) unal init ("0"b), 9 175 2 mode fixed bin init ( 1), 9 176 2 severity fixed bin init ( 0), 9 177 2 code fixed bin(35) init ( 0), 9 178 2 caller char(65) varying init (""), 9 179 2 data, 9 180 3 data_ptr ptr init (null), 9 181 3 data_lth fixed bin(21) init ( 0), 9 182 2 class char(10) varying init (""), 9 183 2 ioa_msg char(500) varying init (""); 9 184 9 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 9 186 9 187 dcl 1 sl_info_code_msg aligned int static options(constant), 9 188 2 version char(8) init ("sl_info1"), 9 189 2 arg_list_ptr ptr init (null), 9 190 2 loc, 9 191 3 (mode init (-1), 9 192 severity init (-1), 9 193 code init ( 1), 9 194 caller init (-1), 9 195 data init ( 0), 9 196 class init ( 0), 9 197 ioa_msg init ( 2)) fixed bin, 9 198 2 flags, 9 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 9 200 3 flags_pad bit(35) unal init ("0"b), 9 201 2 mode fixed bin init ( 1), 9 202 2 severity fixed bin init ( 0), 9 203 2 code fixed bin(35) init ( 0), 9 204 2 caller char(65) varying init (""), 9 205 2 data, 9 206 3 data_ptr ptr init (null), 9 207 3 data_lth fixed bin(21) init ( 0), 9 208 2 class char(10) varying init (""), 9 209 2 ioa_msg char(500) varying init (""); 9 210 9 211 9 212 /* Syntax: call Trace (ioa_ctl, args); */ 9 213 9 214 dcl 1 sl_info_msg aligned int static options(constant), 9 215 2 version char(8) init ("sl_info1"), 9 216 2 arg_list_ptr ptr init (null), 9 217 2 loc, 9 218 3 (mode init (-1), 9 219 severity init (-1), 9 220 code init ( 0), 9 221 caller init (-1), 9 222 data init ( 0), 9 223 class init ( 0), 9 224 ioa_msg init ( 1)) fixed bin, 9 225 2 flags, 9 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 9 227 3 flags_pad bit(35) unal init ("0"b), 9 228 2 mode fixed bin init ( 1), 9 229 2 severity fixed bin init ( 0), 9 230 2 code fixed bin(35) init ( 0), 9 231 2 caller char(65) varying init (""), 9 232 2 data, 9 233 3 data_ptr ptr init (null), 9 234 3 data_lth fixed bin(21) init ( 0), 9 235 2 class char(10) varying init (""), 9 236 2 ioa_msg char(500) varying init (""); 9 237 9 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 932 933 934 end astty_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1536.5 astty_.pl1 >special_ldd>install>MR12.2-1061>astty_.pl1 920 1 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 1-10 2 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 922 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 924 5 08/06/87 0913.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 926 6 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 928 7 09/01/77 1359.3 set_term_type_info.incl.pl1 >ldd>include>set_term_type_info.incl.pl1 930 8 08/06/87 0913.5 terminal_type_data.incl.pl1 >ldd>include>terminal_type_data.incl.pl1 932 9 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. ME 000000 constant char(6) initial packed unaligned dcl 118 set ref 244* 308* 545* 583* 597* 668* 686* 703* 715* 725* 787* SL_LOG 000050 constant fixed bin(17,0) initial dcl 9-14 set ref 545* 561 640 SL_LOG_SILENT constant fixed bin(17,0) initial dcl 9-14 ref 557 647 Stream_input_output 000045 constant fixed bin(17,0) initial dcl 6-15 set ref 723* TTY_HUNG constant fixed bin(17,0) initial dcl 5-64 ref 306 665 668 683 758 770 787 abortflag parameter fixed bin(17,0) dcl 319 set ref 317 325 325 333 333 340* 344* acode 000434 automatic fixed bin(35,0) dcl 658 set ref 679* 682 683 686* 688 addr builtin function dcl 59 ref 165 165 166 166 196 196 199 199 241 241 251 260 260 288 288 328 328 336 336 365 365 392 392 421 424 424 454 454 488 488 492 492 510 510 511 511 679 679 arg based char packed unaligned dcl 527 ref 543 argc 000373 automatic fixed bin(17,0) dcl 524 set ref 539* 540 argl 000376 automatic fixed bin(21,0) dcl 526 set ref 541* 543 argp 000374 automatic pointer dcl 525 set ref 541* 543 author based structure level 2 dcl 1-9 author_dcl based structure level 1 dcl 1-9 based_chars based char(1) array packed unaligned dcl 413 set ref 421 baud_rate 33(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-72 ref 241 bv_arg1 parameter char packed unaligned dcl 591 in procedure "print_arg" set ref 588 597* bv_arg1 parameter char packed unaligned dcl 605 in procedure "print_num" set ref 602 619* bv_arg2 parameter char packed unaligned dcl 591 in procedure "print_arg" set ref 588 597* bv_arg2 parameter fixed bin(17,0) dcl 605 in procedure "print_num" ref 602 615 bv_modes parameter char packed unaligned dcl 218 set ref 206* 215 bv_new_modes parameter char packed unaligned dcl 183 set ref 178 190 209* bv_order parameter char packed unaligned dcl 231 set ref 226 236 254* bv_order_ptr parameter pointer dcl 231 ref 226 235 caller parameter char(32) packed unaligned dcl 659 in procedure "check_line_status" set ref 654 676* caller parameter char(32) packed unaligned dcl 752 in procedure "validate_cdte" set ref 749 756 756 761* cdte based structure level 1 dcl 3-72 cdtep 000400 automatic pointer dcl 3-41 set ref 148* 150 150 153 153 153 155 164 165 165 165 166 166 166 169 169 169 172 192 195 196 196 196 199 199 238 241 241 244 257 259 260 260 260 263 263 266 270 270 270 281 283 284 288 288 288 291 292 297 297 299 306 308 308 309 322 327 328 328 328 335 336 336 336 340 340 359 363 365 365 365 368 368 386 390 392 392 392 395 395 418 423 424 424 424 428 428 449 453 454 454 454 458 458 468 469 469 472 472 486 486 488 489 489 492 492 492 496 496 508 510 511 511 511 514 514 583 583 597 597 630 665 668 668 668 679 679 683 686 686 701 703 705 709 711 711 715 717 718 719 723 725 727 728 729 730 739 739 741 742 743 744 755* 756 756 756 756 758 770 787 787 787 changemode_entry 000113 automatic bit(1) packed unaligned dcl 112 set ref 185* 190 205 220* channel_threads based structure level 1 dcl 3-249 chars parameter char packed unaligned dcl 577 set ref 575 583* code parameter fixed bin(35,0) dcl 145 set ref 142 147* 153* 160 166* 167 167* 169* 178 196* 197 197* 199* 201 201 201* 215 226 241* 243 244* 260* 261 261* 263* 270* 277 285* 288* 289 293* 297* 303 303 305* 317 328* 329 329* 330 336* 337 337* 340* 350 365* 366 366* 368* 375 392* 393 393* 395* 410 424* 425 425* 426 428* 441 454* 455 455* 456 458* 469* 472* 479 492* 493 493* 496* 503 511* 512 512* 514* 583* 597* 614 640 662 663 665 665 668* 672* 683 688* 701* 702 703* 711* 714 715* 723* 724 725* 754* 759* 770 770 770 787* 790* codeptr builtin function dcl 59 ref 711 711 cu_$arg_count 000126 constant entry external dcl 522 ref 539 cu_$arg_ptr 000130 constant entry external dcl 523 ref 541 data_ptr 000370 automatic pointer dcl 414 set ref 421* 423* detachflag parameter fixed bin(17,0) dcl 481 set ref 479 487 489* 496* 498* dflag 000372 automatic fixed bin(17,0) dcl 482 set ref 487* 488 488 dialup_flags 75(18) based structure level 2 packed packed unaligned dcl 3-72 el_severity 000010 internal static fixed bin(17,0) initial dcl 96 set ref 244* 308* 545* 557* 561* 644 668* 686* 703* 715* 725* 787* eleven_digits 000422 automatic picture(12) packed unaligned dcl 608 set ref 615* 616 619 619 entrypoint 000110 automatic char(9) packed unaligned dcl 111 set ref 357* 383* 398* 402* error_table_$io_no_permission 000116 external static fixed bin(35,0) dcl 133 ref 303 665 683 770 error_table_$line_status_pending 000122 external static fixed bin(35,0) dcl 135 ref 663 error_table_$mpx_down 000120 external static fixed bin(35,0) dcl 134 ref 303 665 683 770 error_table_$not_a_valid_iocb 000124 external static fixed bin(35,0) dcl 136 ref 289 error_table_$smallarg 000030 external static fixed bin(35,0) dcl 63 ref 201 event 72 based fixed bin(71,0) level 2 dcl 3-72 set ref 165 165 169* flags 50 based structure level 2 dcl 3-72 fnpe based structure level 1 dcl 3-200 hcs_$tty_abort 000042 constant entry external dcl 71 ref 340 469 hcs_$tty_detach 000046 constant entry external dcl 73 ref 489 496 hcs_$tty_detach_new_proc 000050 constant entry external dcl 74 ref 514 hcs_$tty_event 000052 constant entry external dcl 75 ref 169 hcs_$tty_get_line 000062 constant entry external dcl 79 ref 395 hcs_$tty_index 000054 constant entry external dcl 76 ref 153 270 hcs_$tty_order 000056 constant entry external dcl 77 ref 199 263 679 hcs_$tty_read 000060 constant entry external dcl 78 ref 368 hcs_$tty_state 000064 constant entry external dcl 80 ref 297 hcs_$tty_write 000066 constant entry external dcl 81 ref 428 hphcs_$tty_write_force 000044 constant entry external dcl 72 ref 458 472 idx 000425 automatic fixed bin(17,0) dcl 612 set ref 616* 617 617* 619 619 io_line based char packed unaligned dcl 129 set ref 402* 434* 464* io_linel 000130 automatic fixed bin(21,0) dcl 116 set ref 401* 402 402 433* 434 434 463* 464 464 ioa_$rsnnl 000032 constant entry external dcl 67 ref 693 iocb_ptr 000114 automatic pointer dcl 113 set ref 701* 709 iocbp 147 based pointer level 2 packed packed unaligned dcl 3-72 set ref 150 165 166 195 196 259 260 283 288 292* 327 328 335 336 363 365 390 392 423 424 453 454 486 488 492 510 511 709* 711 718 719* 723 728 729 730* 739 741 742 743 744* 756 iox_$attach_ptr 000070 constant entry external dcl 82 ref 711 iox_$close 000072 constant entry external dcl 83 ref 741 iox_$control 000074 constant entry external dcl 84 ref 165 166 196 259 260 288 327 328 335 336 365 392 424 454 488 492 510 511 iox_$destroy_iocb 000076 constant entry external dcl 85 ref 718 729 743 iox_$detach_iocb 000100 constant entry external dcl 86 ref 728 742 iox_$find_iocb 000102 constant entry external dcl 87 ref 701 iox_$get_chars 000104 constant entry external dcl 88 ref 363 iox_$get_line 000106 constant entry external dcl 89 ref 390 iox_$modes 000110 constant entry external dcl 90 ref 195 iox_$open 000112 constant entry external dcl 91 ref 723 iox_$put_chars 000114 constant entry external dcl 92 ref 423 453 iox_code 000105 automatic fixed bin(35,0) dcl 108 set ref 165* 167 195* 197 259* 261 327* 329 335* 337 363* 366 390* 393 423* 425 453* 455 488* 489 489* 493 510* 512 iox_nelem 000103 automatic fixed bin(21,0) dcl 107 set ref 362* 363* 389* 390* 422* 423* 452* 453* iox_nelemt 000104 automatic fixed bin(21,0) dcl 107 set ref 363* 364 390* 391 length builtin function dcl 59 ref 189 630 line_status_storage 000132 automatic bit(72) dcl 117 set ref 679 679 693* line_type 33 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-72 ref 241 lsv 000100 automatic fixed bin(17,0) dcl 592 in procedure "print_arg" set ref 595* 597* lsv parameter fixed bin(17,0) dcl 625 in procedure "should_trace" set ref 624 640* 644* 647* lsv 000412 automatic fixed bin(17,0) dcl 578 in procedure "print" set ref 581* 583* ml parameter fixed bin(17,0) dcl 377 set ref 350 355* 375 382* 404* 441 443 467 ml1 parameter fixed bin(17,0) dcl 412 set ref 410 422 426 428* 431* 433 mo parameter fixed bin(17,0) dcl 412 set ref 410 421 428* modes 000167 automatic structure level 1 dcl 123 set ref 199 199 mp parameter pointer dcl 377 set ref 350 363* 368* 375 390* 395* 402 410 421 428* 434 441 453* 458* 464 472* mpxe based structure level 1 dcl 3-221 mt parameter fixed bin(17,0) dcl 412 set ref 410 416* 426* 428* name 2 based char(32) level 2 in structure "cdte" dcl 3-72 in procedure "astty_" set ref 153* 244* 270* 308* 583* 597* 630 668* 686* 701 703* 711 715* 725* 787* name 1 based char(32) level 2 in structure "set_term_type_info" packed packed unaligned dcl 7-8 in procedure "astty_" set ref 241* 244* nelem 000100 automatic fixed bin(17,0) dcl 106 set ref 352* 362 368* 379* 389 395* 443* 452 456 458* 461* 463 472* nelemt 000101 automatic fixed bin(17,0) dcl 106 set ref 353* 364* 368* 380* 391* 395* 398* 401 404 444* 456* 458* 467 472* nl_found 000106 automatic bit(1) packed unaligned dcl 109 set ref 395* null builtin function dcl 59 ref 150 283 292 327 327 335 335 486 719 730 739 744 756 obsolete 000107 automatic bit(1) dcl 110 set ref 723* octalstatus 000435 automatic char(24) packed unaligned dcl 660 set ref 692* 693* 694* offset 000102 automatic fixed bin(17,0) dcl 106 set ref 354* 368* 381* 395* 445* 458* 472* options 50(17) based structure level 3 packed packed unaligned dcl 3-72 order_name 000116 automatic char(32) packed unaligned dcl 114 set ref 236* 238 250* 259* 263* 266 order_ptr 000126 automatic pointer dcl 115 set ref 235* 241 244 251* 259* 263* p parameter pointer dcl 144 ref 142 148 160 178 215 226 277 317 350 375 410 441 479 503 755 pid parameter bit(36) dcl 505 set ref 503 510 510 514* retry_label parameter label variable local dcl 657 ref 654 695 rtrim builtin function dcl 59 ref 711 set_term_type_info based structure level 1 dcl 7-8 size 000167 automatic fixed bin(17,0) level 2 dcl 123 set ref 189* state 77 based fixed bin(17,0) level 2 dcl 3-72 set ref 153* 166 166 169* 196 196 199* 260 260 263* 270* 284* 288 288 291* 297* 299* 306 308* 309* 328 328 336 336 340* 365 365 368* 392 392 395* 424 424 428* 454 454 458* 469* 472* 489* 492 492 496* 511 511 514* 583* 597* 665 668 668* 679* 683 686* 705* 717* 727* 758* 770 787 787* string 1 000167 automatic char(512) level 2 packed packed unaligned dcl 123 set ref 189 190* 191* 195* 206 substr builtin function dcl 59 ref 619 619 630 sys_log_ 000034 constant entry external dcl 68 ref 308 545 sys_log_$error_log 000036 constant entry external dcl 69 ref 244 583 597 668 686 703 715 725 787 terminal_data 000134 automatic structure level 1 unaligned dcl 121 set ref 241 241 251 terminal_type_data based structure level 1 dcl 8-15 trace_call_sw 000013 internal static bit(1) initial dcl 99 set ref 537* 545* 551* 570 614 629 640 trace_error_sw 000012 internal static bit(1) initial dcl 98 set ref 553 565* 569* 640 trace_io_sw 000026 internal static bit(1) initial dcl 102 set ref 400 432 462 529* 533* 552* trace_it 000101 automatic bit(1) dcl 593 in procedure "print_arg" set ref 595* 596 trace_it 000413 automatic bit(1) dcl 579 in procedure "print" set ref 581* 582 trace_it parameter bit(1) dcl 626 in procedure "should_trace" set ref 624 636* 639* 643* 646* trace_select_channel 000015 internal static varying char(32) initial dcl 101 set ref 543* 545* 630 630 trace_select_sw 000014 internal static bit(1) initial dcl 100 set ref 538* 542* 545* 630 trace_sw 000011 internal static bit(1) initial dcl 97 set ref 535* 545* 553* 563* 570* 637 ttd_version_3 constant fixed bin(17,0) initial dcl 8-54 ref 240 ttt_info_$terminal_data 000040 constant entry external dcl 70 ref 241 twx 76 based fixed bin(17,0) level 2 dcl 3-72 set ref 153* 155* 169* 199* 263* 270* 297* 340* 368* 395* 428* 458* 469* 472* 489* 496* 514* 679* 756 use_iocb 50(25) based bit(1) level 4 packed packed unaligned dcl 3-72 ref 150 164 192 238 257 266 281 322 359 386 418 449 468 486 508 739 756 756 verify builtin function dcl 610 ref 616 version 000134 automatic fixed bin(17,0) level 2 dcl 121 set ref 240* wakeup_handler 75(20) based bit(1) level 3 packed packed unaligned dcl 3-72 set ref 172* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTIVE internal static fixed bin(17,0) initial dcl 3-272 ACTIVE_VALUES internal static char(18) initial array dcl 5-86 ANS_SERVICE internal static fixed bin(17,0) initial dcl 3-259 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 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 Direct_input internal static fixed bin(17,0) initial dcl 6-15 Direct_output internal static fixed bin(17,0) initial dcl 6-15 Direct_update internal static fixed bin(17,0) initial dcl 6-15 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 INACTIVE internal static fixed bin(17,0) initial dcl 3-272 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 6-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 6-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 6-15 MC_SERVICE internal static fixed bin(17,0) initial dcl 3-259 MPX_BOOT internal static fixed bin(17,0) initial dcl 3-306 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 MPX_UP internal static fixed bin(17,0) initial dcl 3-306 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 3-280 NOW_DIALED internal static fixed bin(17,0) initial dcl 5-76 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 5-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 5-76 NOW_FREE internal static fixed bin(17,0) initial dcl 5-76 NOW_HAS_PROCESS internal static fixed bin(17,0) initial dcl 5-76 NOW_HUNG_UP internal static fixed bin(17,0) initial dcl 5-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 5-76 NOW_LOGGED_IN internal static fixed bin(17,0) initial dcl 5-76 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_TERM_SENT internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 5-142 PT_ALARM internal static fixed bin(17,0) initial dcl 5-106 PT_BUMP internal static fixed bin(17,0) initial dcl 5-106 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 5-106 PT_DETACH internal static fixed bin(17,0) initial dcl 5-106 PT_FPE internal static fixed bin(17,0) initial dcl 5-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 5-106 PT_LOGOUT internal static fixed bin(17,0) initial dcl 5-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 5-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 5-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 5-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 5-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 5-106 SLAVE_SERVICE internal static fixed bin(17,0) initial dcl 3-259 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 9-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 9-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 9-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 9-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 9-62 SL_LOG_BEEP internal static fixed bin(17,0) initial dcl 9-14 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 9-14 SL_TYPE internal static fixed bin(17,0) initial dcl 9-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 9-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 9-14 STATE_VALUES internal static char(15) initial array dcl 5-70 Sequential_input internal static fixed bin(17,0) initial dcl 6-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 6-15 Sequential_output internal static fixed bin(17,0) initial dcl 6-15 Sequential_update internal static fixed bin(17,0) initial dcl 6-15 Stream_input internal static fixed bin(17,0) initial dcl 6-15 Stream_output internal static fixed bin(17,0) initial dcl 6-15 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 5-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 5-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 5-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 5-93 TAG_UFT internal static char(1) initial packed unaligned dcl 5-93 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 3-259 TRA_VEC_VALUES internal static char(32) initial array dcl 5-54 TTY_DIALED internal static fixed bin(17,0) initial dcl 5-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 5-64 TTY_MASKED internal static fixed bin(17,0) initial dcl 5-64 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 5-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 5-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 5-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 5-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 5-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 5-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 5-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 5-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 5-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 5-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 5-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 5-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 5-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGOUT internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGOUT_SIG internal static fixed bin(17,0) initial dcl 5-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 5-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 5-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 5-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 5-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 5-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 5-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 5-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 5-25 cdt based structure level 1 dcl 3-44 cdtp automatic pointer dcl 3-41 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 iox_modes internal static char(24) initial array dcl 6-6 mpxep automatic pointer dcl 3-41 short_iox_modes internal static char(4) initial array dcl 6-12 sl_info automatic structure level 1 dcl 9-24 sl_info_code_msg internal static structure level 1 dcl 9-187 sl_info_msg internal static structure level 1 dcl 9-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 9-161 sl_info_sev_code_msg internal static structure level 1 dcl 9-82 sl_info_sev_coded_msg internal static structure level 1 dcl 9-134 sl_info_sev_msg internal static structure level 1 dcl 9-108 stti_version_1 internal static fixed bin(17,0) initial dcl 7-5 sttip automatic pointer dcl 7-6 supported_fnp internal static bit(1) initial array packed unaligned dcl 4-31 ttdp automatic pointer dcl 8-53 NAMES DECLARED BY EXPLICIT CONTEXT. HUNG_UP 004776 constant label dcl 665 ref 683 astty_ 000432 constant entry external dcl 14 ref 711 711 bad_abort 002260 constant label dcl 342 ref 330 changemode_join 000726 constant label dcl 186 ref 221 check_line_status 004756 constant entry internal dcl 654 ref 200 264 342 369 396 429 459 471 474 check_state_return 004257 constant label dcl 770 ref 156 173 210 273 345 405 437 468 475 516 create_iocb 005255 constant entry internal dcl 698 ref 150 269 destroy_iocb 005637 constant entry internal dcl 736 ref 268 494 673 760 791 general_return 004256 constant label dcl 767 ref 247 674 677 689 706 720 731 762 log_error 004214 constant entry external dcl 556 log_error_1 004226 constant entry external dcl 560 log_error_join 004236 constant label dcl 563 ref 558 no_log_error 004243 constant entry external dcl 568 print 004341 constant entry internal dcl 575 ref 171 207 515 print_arg 004435 constant entry internal dcl 588 ref 209 254 402 434 464 619 676 694 761 print_num 004547 constant entry internal dcl 602 ref 155 299 344 398 431 461 498 re_abort 002025 constant label dcl 322 ref 342 342 re_force_abort 003365 constant label dcl 469 set ref 471 471 re_get_chars 002344 constant label dcl 359 ref 369 369 re_get_line 002524 constant label dcl 386 ref 396 396 re_mode 000751 constant label dcl 192 ref 200 200 re_order 001372 constant label dcl 254 ref 264 264 re_write 002736 constant label dcl 418 ref 429 429 re_write_force 003166 constant label dcl 449 ref 459 459 re_write_force_2 003415 constant label dcl 472 ref 474 474 should_trace 004651 constant entry internal dcl 624 ref 581 595 should_trace_channel 004726 constant entry internal dcl 628 ref 640 646 trace_io 004046 constant entry external dcl 532 trace_join 004056 constant label dcl 535 ref 530 trace_off 004200 constant entry external dcl 550 trace_on 004035 constant entry external dcl 520 trace_read 002655 constant label dcl 398 ref 370 trace_report_return 004131 constant label dcl 545 ref 540 554 566 571 tty_abort 002010 constant entry external dcl 317 tty_changemode 000706 constant entry external dcl 178 tty_detach 003455 constant entry external dcl 479 tty_event 000537 constant entry external dcl 160 tty_force 003144 constant entry external dcl 441 tty_get_chars 002315 constant entry external dcl 350 tty_getmode 001163 constant entry external dcl 215 tty_index 000444 constant entry external dcl 142 tty_new_proc 003667 constant entry external dcl 503 tty_order 001210 constant entry external dcl 226 tty_read 002476 constant entry external dcl 375 tty_state 001607 constant entry external dcl 277 tty_write 002717 constant entry external dcl 410 validate_cdte 005721 constant entry internal dcl 749 ref 162 186 234 279 321 356 384 417 447 484 507 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6646 7000 6113 6656 Length 7526 6113 132 511 532 20 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME astty_ 652 external procedure is an external procedure. print internal procedure shares stack frame of external procedure astty_. print_arg 110 internal procedure is called during a stack extension. print_num internal procedure shares stack frame of external procedure astty_. should_trace 78 internal procedure is called by several nonquick procedures. should_trace_channel internal procedure shares stack frame of internal procedure should_trace. check_line_status internal procedure shares stack frame of external procedure astty_. create_iocb internal procedure shares stack frame of external procedure astty_. destroy_iocb internal procedure shares stack frame of external procedure astty_. validate_cdte internal procedure shares stack frame of external procedure astty_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 el_severity astty_ 000011 trace_sw astty_ 000012 trace_error_sw astty_ 000013 trace_call_sw astty_ 000014 trace_select_sw astty_ 000015 trace_select_channel astty_ 000026 trace_io_sw astty_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME astty_ 000100 nelem astty_ 000101 nelemt astty_ 000102 offset astty_ 000103 iox_nelem astty_ 000104 iox_nelemt astty_ 000105 iox_code astty_ 000106 nl_found astty_ 000107 obsolete astty_ 000110 entrypoint astty_ 000113 changemode_entry astty_ 000114 iocb_ptr astty_ 000116 order_name astty_ 000126 order_ptr astty_ 000130 io_linel astty_ 000132 line_status_storage astty_ 000134 terminal_data astty_ 000167 modes astty_ 000370 data_ptr astty_ 000372 dflag astty_ 000373 argc astty_ 000374 argp astty_ 000376 argl astty_ 000400 cdtep astty_ 000412 lsv print 000413 trace_it print 000422 eleven_digits print_num 000425 idx print_num 000434 acode check_line_status 000435 octalstatus check_line_status print_arg 000100 lsv print_arg 000101 trace_it print_arg THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$arg_count cu_$arg_ptr hcs_$tty_abort hcs_$tty_detach hcs_$tty_detach_new_proc hcs_$tty_event hcs_$tty_get_line hcs_$tty_index hcs_$tty_order hcs_$tty_read hcs_$tty_state hcs_$tty_write hphcs_$tty_write_force ioa_$rsnnl iox_$attach_ptr iox_$close iox_$control iox_$destroy_iocb iox_$detach_iocb iox_$find_iocb iox_$get_chars iox_$get_line iox_$modes iox_$open iox_$put_chars sys_log_ sys_log_$error_log ttt_info_$terminal_data THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$io_no_permission error_table_$line_status_pending error_table_$mpx_down error_table_$not_a_valid_iocb error_table_$smallarg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000431 142 000437 147 000454 148 000455 150 000461 153 000470 155 000515 156 000534 160 000535 162 000547 164 000554 165 000560 166 000613 167 000647 168 000653 169 000654 171 000671 172 000676 173 000701 178 000702 185 000724 186 000726 189 000733 190 000735 191 000746 192 000751 195 000755 196 001004 197 001040 198 001044 199 001045 200 001101 201 001111 205 001117 206 001121 207 001127 208 001134 209 001135 210 001160 215 001161 220 001201 221 001202 226 001203 234 001226 235 001233 236 001237 238 001244 240 001254 241 001256 243 001320 244 001322 247 001364 250 001365 251 001370 254 001372 257 001412 259 001416 260 001444 261 001500 262 001504 263 001505 264 001535 266 001545 268 001555 269 001556 270 001557 273 001604 277 001605 279 001617 281 001624 283 001630 284 001633 285 001634 286 001635 288 001636 289 001670 291 001674 292 001676 293 001700 296 001701 297 001702 299 001715 303 001734 305 001742 306 001743 308 001747 309 002001 312 002003 317 002004 321 002020 322 002025 325 002031 327 002037 328 002073 329 002127 330 002133 333 002135 335 002143 336 002201 337 002235 339 002241 340 002242 342 002260 344 002270 345 002307 350 002310 352 002325 353 002327 354 002330 355 002331 356 002333 357 002340 359 002344 362 002350 363 002352 364 002374 365 002376 366 002432 367 002436 368 002437 369 002463 370 002473 375 002474 379 002506 380 002510 381 002511 382 002512 383 002514 384 002517 386 002524 389 002530 390 002532 391 002554 392 002556 393 002612 394 002616 395 002617 396 002645 398 002655 400 002660 401 002663 402 002665 404 002705 405 002710 410 002711 416 002727 417 002731 418 002736 421 002742 422 002750 423 002752 424 002771 425 003025 426 003031 427 003036 428 003037 429 003063 431 003073 432 003112 433 003115 434 003120 437 003141 441 003142 443 003154 444 003157 445 003160 447 003161 449 003166 452 003172 453 003174 454 003214 455 003250 456 003254 457 003260 458 003261 459 003305 461 003315 462 003324 463 003327 464 003331 467 003355 468 003361 469 003365 471 003405 472 003415 474 003442 475 003452 479 003453 484 003465 486 003472 487 003501 488 003504 489 003542 492 003563 493 003617 494 003623 495 003624 496 003625 498 003643 499 003662 503 003663 507 003677 508 003704 510 003710 511 003747 512 004003 513 004007 514 004010 515 004026 516 004033 520 004034 529 004042 530 004044 532 004045 533 004053 535 004056 537 004060 538 004061 539 004062 540 004073 541 004075 542 004115 543 004120 545 004131 548 004176 550 004177 551 004205 552 004207 553 004210 554 004212 556 004213 557 004221 558 004224 560 004225 561 004233 563 004236 565 004240 566 004241 568 004242 569 004250 570 004252 571 004255 767 004256 770 004257 787 004273 790 004335 791 004337 793 004340 575 004341 581 004352 582 004362 583 004366 585 004433 588 004434 595 004455 596 004466 597 004471 599 004546 602 004547 614 004560 615 004567 616 004600 617 004612 619 004615 621 004646 624 004650 636 004656 637 004660 639 004663 640 004665 643 004706 644 004711 646 004714 647 004722 649 004725 628 004726 629 004730 630 004736 632 004753 654 004756 662 004760 663 004763 665 004766 668 004776 672 005041 673 005043 674 005044 676 005045 677 005063 679 005064 682 005122 683 005124 686 005136 688 005174 689 005176 692 005177 693 005202 694 005232 695 005252 698 005255 701 005256 702 005303 703 005305 705 005342 706 005344 709 005345 711 005350 714 005436 715 005441 717 005476 718 005500 719 005514 720 005517 723 005520 724 005540 725 005542 727 005577 728 005601 729 005615 730 005632 731 005635 734 005636 736 005637 739 005640 741 005647 742 005663 743 005700 744 005715 747 005720 749 005721 754 005723 755 005724 756 005730 758 005755 759 005757 760 005761 761 005762 762 006005 764 006006 ----------------------------------------------------------- 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