COMPILATION LISTING OF SEGMENT tty_index Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0936.9 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /****^ HISTORY COMMENTS: 13* 1) change(85-02-01,RCoren), approve(), audit(), install(): 14* Modified to initialize the tty_access_class structure at the tty_attach 15* entry. 16* Modified December 1984 by Robert Coren to implement 17* "(set get)_line_status_enabled" orders. 18* Modified 84-12-04 by EJ Sharpe to remove protection_audit_ calls 19* Modified November 1984 by Robert Coren to use tty_area_manager entries 20* for allocating and freeing TCBs. 21* Modified September 1984 by Robert Coren to turn off wtcb.dialing if 22* dialout fails, and to zero pad fields in output_flow_control_info 23* structure for set_terminal_data order. 24* Modified February 1984 by Robert Coren to correct bug in access_class 25* checking. 26* Modified May 1983 by Robert Coren and E. N. Kittlitz for 27* required_access_class. 28* Modified November 1982 by Robert Coren to report wtcb.error_code. 29* Modified November 1982 by Robert Coren to reset masked bit on "unmask" 30* order. 31* Modified June 1982 by Robert Coren to report MASKED state and to reset 32* it on listen order. 33* Modified June 1981 by Benson I. Margulies for error on duplicate 34* attachments. 35* Modified April 1981 by Robert Coren to handle dialup time 36* Modified 81 January by Art Beattie to pass along 32 character phone 37* numbers. 38* Modified 4 December 1980 by Robert Coren to add copy_meters order 39* Modified 3/6/80 by C. Hornig to pass 9-bit phone numbers 40* Modified 4/10/79 by J. Stern to remove modes handling 41* Modified 3/1/79 by J. Stern to add set_wakeup_table order 42* Modified 10/11/78 by J. Stern for multiplexing changes 43* Modified Aug 78 by J. Nicholls to implement ring 0 demuxing, some major 44* changes involved 45* Modified 5/17/78 by J. Stern to implement breakall mode 46* Modified 4/18/78 by Robert Coren to implement blk_xfer mode and 47* (set get)_framing chars orders and to fix bug that always rned off 48* fulldpx with echoplex despite explicit user request 49* Modified 2/6/78 by Robert Core 50* 2) change(86-04-23,Coren), approve(86-04-23,MCR7300), 51* audit(86-05-19,Beattie), install(86-07-08,MR12.0-1089): 52* To use version 2 mcs_echo_neg structure. 53* 3) change(86-06-19,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 54* install(86-10-09,MR12.0-1181): 55* Changed to support the new tty event message format declared in 56* net_event_message.incl.pl1 which replaces tty_event_message.incl.pl1. 57* 4) change(86-09-26,Beattie), approve(86-09-22,MCR7542), 58* audit(86-10-20,Brunelle), install(86-10-21,MR12.0-1190): 59* Remove references to the 963 and 029 preaccess commands and remove support 60* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 61* 5) change(87-03-10,LJAdams), approve(87-04-03,MCR7646), 62* audit(87-05-06,Gilcrease), install(87-05-14,MR12.1-1029): 63* Added support for ttd_version_3 which includes the protocol field. 64* 6) change(87-06-17,LJAdams), approve(87-06-17,MCR7584), 65* audit(87-08-06,Gilcrease), install(87-08-06,MR12.1-1063): 66* Changed editing_chars_version_2 to editing_chars_version_3. 67* 7) change(88-08-15,Parisek), approve(88-08-15,PBF7928), 68* audit(88-08-15,Farley), install(88-08-16,MR12.2-1086): 69* Make call to tty_write$locked for the "read_status" control order if tty 70* is attached through the DSA UNCP multiplexer. This will subsequently set 71* the wtcb.turn flag ON so the tty will not remain in a blocked for output 72* state. 73* 8) change(88-08-19,Parisek), approve(88-08-19,PBF7928), 74* audit(88-08-19,Farley), install(88-08-22,MR12.2-1087): 75* Correct bug in the is_parent_mpx procedure to return "0"b if parent 76* multiplexer type does not match multiplexer type being checked. 77* 9) change(88-09-21,Brunelle), approve(88-09-21,MCR7813), 78* audit(88-10-12,Blair), install(88-10-17,MR12.2-1171): 79* Add code to support SPECIAL_VERSION_2 special tables in addition to 80* SPECIAL_VERSION. These are 15 & 3 char tables respectively. Change 81* set/get_special control orders to handle the old and new lengths properly. 82* 10) change(88-10-20,Brunelle), approve(88-10-20,PBF7813), 83* audit(88-10-21,Farley), install(88-10-22,MR12.2-1181): 84* Correct problem of returning invalid ptr to structure (it was already 85* freed). Also improve copying of old/new versions of special chars tables. 86* END HISTORY COMMENTS */ 87 88 89 /* format: style4,delnl,insnl,^ifthendo */ 90 tty_index: 91 proc (a_name, twx, state, ercode); /* go get index from name, and sign onto tty */ 92 93 94 dcl a_name char (*); /* tty name such as a.h102 */ 95 dcl a_wtcbp ptr; 96 dcl a_tcbp ptr; 97 dcl a_sw bit (1); 98 dcl a_order char (*); /* order name */ 99 dcl a_argptr ptr; /* pointer to order data */ 100 dcl a_data_base_ptr ptr; /* pointer returned of establishing wtcb */ 101 dcl a_event fixed bin (71); /* event channel name */ 102 103 dcl twx fixed bin; /* tty index (actually also device index ) */ 104 dcl state fixed bin; /* tty state, 1 ignored, 2 listening, 5 dialed */ 105 dcl ercode fixed bin (35); /* error code */ 106 dcl dflag fixed bin; /* disposition flag */ 107 dcl nproc bit (36); /* new proc process */ 108 dcl resetsw fixed; /* abort code, 1 reset read, 2 reset write, 3 reset both */ 109 dcl name char (32); 110 dcl event fixed bin (71); 111 dcl order char (32); 112 dcl argptr ptr; 113 dcl special_ptr ptr; 114 dcl esw fixed bin; 115 dcl cleanup condition; 116 dcl (i, j) fixed bin; 117 dcl devx fixed bin (17); 118 dcl (sw, rawom) bit (1) aligned; 119 dcl rw_switch bit (2) aligned; /* bit-string version of reset_read/write switch */ 120 dcl code fixed bin (35); 121 dcl temp_ptr ptr; 122 dcl table_type fixed bin; 123 dcl locked bit (1) init ("0"b); 124 dcl sus_count fixed bin; /* automatic copy of output_suspend count */ 125 dcl res_count fixed bin; /* likewise for resume */ 126 dcl uproc_attach_required_for_setup bit (1) init ("1"b); 127 dcl uproc_required_for_setup bit (1) init ("1"b); 128 dcl phone_data varying char (32); 129 dcl aim_attributes_string char (32); 130 dcl user_auth_string char (32); 131 dcl echo_version_1 bit (1); 132 dcl old_special_table_version bit (1); 133 134 /*** REMOVE when Emacs, video and mowse are using version 2. ***/ 135 136 dcl 1 new_waketab aligned like wakeup_table; 137 dcl 1 old_waketab aligned like wakeup_table; 138 dcl 1 sfc aligned like framing_chars; 139 dcl 1 auto_ifc aligned like input_flow_control_info; 140 dcl 1 auto_ofc aligned like output_flow_control_info; 141 dcl 1 l_tty_access_class aligned like tty_access_class; 142 dcl 1 auto_mode aligned, 143 2 len fixed bin, 144 2 str char (8); 145 146 dcl ever_initialized bit (1) int static init ("0"b); /* indicates whether init_channel ever called before */ 147 148 dcl ( 149 input_tr_type init (1), /* input translation table type */ 150 output_tr_type init (2), /* output translation table type */ 151 input_cv_type init (3), /* input conversion table type */ 152 output_cv_type init (4), /* output conversion table type */ 153 special_type init (5), /* special chars table type */ 154 delay_type init (6) 155 ) fixed bin int static options (constant); /* delay table type */ 156 157 dcl max_special_size fixed bin int static options (constant) init (600); 158 /* max special words table size in words */ 159 160 161 dcl IGNORE fixed bin int static options (constant) init (1); 162 dcl LISTENING fixed bin int static options (constant) init (2); 163 dcl DIALED_UP fixed bin int static options (constant) init (5); 164 dcl MASKED_STATE fixed bin int static options (constant) init (-1); 165 dcl NUL char (1) int static options (constant) init (""); /* NUL character (\000) */ 166 167 dcl white_space char (6) int static options (constant) initial 168 /* BS, CR, NL, HT, VT, FF */ 169 (" 170 "); 171 172 dcl ( 173 error_table_$resource_attached, 174 error_table_$io_no_permission, 175 error_table_$unimplemented_version, 176 error_table_$device_not_usable, 177 error_table_$no_connection, 178 error_table_$no_operation, 179 error_table_$null_info_ptr, 180 error_table_$invalid_state, 181 error_table_$invalid_device, 182 error_table_$smallarg, 183 error_table_$action_not_performed, 184 error_table_$buffer_big, 185 error_table_$bigarg, 186 error_table_$request_pending, 187 error_table_$no_wired_structure, 188 error_table_$inconsistent, 189 error_table_$no_table, 190 error_table_$notalloc, 191 error_table_$no_line_status, 192 error_table_$improper_data_format, 193 error_table_$line_status_pending, 194 error_table_$masked_channel, 195 error_table_$invalid_delay_value, 196 error_table_$undefined_order_request, 197 error_table_$invalid_array_size 198 ) ext fixed bin (35); 199 dcl pds$processid ext static bit (36); 200 dcl pds$process_group_id ext static char (32) aligned; 201 dcl tc_data$initializer_id ext bit (36) aligned; 202 203 dcl 1 pds$access_authorization aligned like aim_template ext static; 204 205 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 206 dcl compare_tty_name_ entry (char (*), char (*)) returns (bit (1)); 207 dcl display_access_class_ entry (bit (72) aligned, char (32)); 208 dcl pxss$ring_0_wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin); 209 dcl syserr entry options (variable); 210 dcl tty_area_manager$allocate entry (fixed bin, ptr); 211 dcl tty_area_manager$free entry (fixed bin, ptr); 212 dcl tty_interrupt$set_static entry; 213 dcl tty_lock$lock_channel entry (fixed bin, fixed bin (35)); 214 dcl tty_lock$unlock_channel entry (fixed bin); 215 dcl tty_tables_mgr$add entry (ptr, fixed bin, fixed bin, bit (18), fixed bin (35)); 216 dcl tty_tables_mgr$delete entry (bit (18), fixed bin (35)); 217 dcl tty_modes entry (ptr, ptr, fixed bin (35)); 218 dcl tty_modes$mpx_only entry (ptr, ptr, fixed bin (35)); 219 dcl tty_write$locked entry (fixed bin, ptr, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (35)); 220 221 dcl ll fixed bin (9) based (argptr); /* for line length order */ 222 223 dcl new_line_type fixed bin based (argptr); /* for set_line_type order */ 224 225 dcl 1 info based (argptr) aligned, /* tty information structure */ 226 2 id char (4) unaligned, /* id of tty */ 227 2 baud_rate fixed bin (17) unal, /* baud rate */ 228 2 line_type fixed bin (17) unal, /* line type for line control */ 229 2 pad bit (36) unal, /* fill */ 230 2 tw_type fixed; /* type of tty (t300) */ 231 232 dcl arg_varying_char32 varying char (32) based (argptr); 233 234 dcl 1 rd_stat aligned based (argptr), /* structure fo read_status call */ 235 2 ev_chan fixed bin (71), 236 2 input_available bit (1); 237 238 dcl 1 wr_stat aligned based (argptr), /* structure for write_status call */ 239 2 ev_chan fixed bin (71), 240 2 output_pending bit (1); 241 242 dcl bit72 bit (72) based; /* for command data */ 243 dcl bit1 bit (1) based; 244 245 dcl inid char (4) based; 246 dcl based_arg fixed bin based; 247 248 dcl 1 editing_chars aligned based (argptr), 249 2 version fixed bin, 250 2 chars char (2) unaligned; 251 252 dcl 1 framing_chars aligned based (argptr), 253 2 frame_begin char (1) unal, 254 2 frame_end char (1) unal; 255 256 dcl 1 get_special_info aligned based (argptr), 257 2 version char (8), 258 2 area_ptr ptr, 259 2 table_ptr ptr; 260 261 dcl 1 get_special_info_old aligned based (argptr), 262 2 area_ptr ptr, 263 2 table_ptr ptr; 264 265 dcl two_chars char (2) based; 266 dcl special_area area based; 267 268 dcl tablerp (6) bit (18) unal based (trpp); /* overlay for tcb.tables */ 269 dcl df_tablerp (6) bit (18) unal based (dftrpp); /* overlay for tcb.default_tables */ 270 dcl new_tablerp (6) bit (18) unal; 271 dcl new_tablep (6) ptr based (ntpp); /* overlay for terminal_type_data.tables */ 272 dcl (trpp, dftrpp, ntpp) ptr; 273 274 dcl (area, storage) condition; 275 276 dcl (addr, abs, bit, clock, divide, fixed, length, low, max, min, null, ptr, rel, search, size, string, substr, unspec) 277 builtin; 278 279 280 /* special chars structures to support old/new versions */ 281 dcl special_chars_old_ptr ptr; 282 dcl 1 special_chars_old aligned based (special_chars_old_ptr), 283 /* table of special character sequences */ 284 2 nl_seq aligned like c_chars_old, /* new-line sequence */ 285 2 cr_seq aligned like c_chars_old, /* carriage-return sequence */ 286 2 bs_seq aligned like c_chars_old, /* backspace sequence */ 287 2 tab_seq aligned like c_chars_old, /* horizontal tab sequence */ 288 2 vt_seq aligned like c_chars_old, /* vertical tab sequence */ 289 2 ff_seq aligned like c_chars_old, /* form-feed sequence */ 290 2 printer_on aligned like c_chars_old, /* printer-on sequence */ 291 2 printer_off aligned like c_chars_old, /* printer_off sequence */ 292 2 red_ribbon_shift aligned like c_chars_old, /* red ribbon shift sequence */ 293 2 black_ribbon_shift aligned like c_chars_old, /* black ribbon shift sequence */ 294 2 end_of_page aligned like c_chars_old, /* end-of-page warning sequence */ 295 2 escape_length fixed bin, /* number of escape sequences */ 296 2 not_edited_escapes (sc_escape_len refer (special_chars_old.escape_length)) like c_chars_old, 297 /* use in ^edited mode */ 298 2 edited_escapes (sc_escape_len refer (special_chars_old.escape_length)) like c_chars_old, 299 /* use in edited mode */ 300 2 input_escapes aligned, 301 3 len fixed bin (8) unaligned, /* length of string */ 302 3 str char (sc_input_escape_len refer (special_chars_old.input_escapes.len)) unaligned, 303 /* escape sequence characters */ 304 2 input_results aligned, 305 3 pad bit (9) unaligned, /* so that strings will look the same */ 306 3 str char (sc_input_escape_len refer (special_chars_old.input_escapes.len)) unaligned; 307 /* results of escape sequences */ 308 dcl 1 c_chars_old based (c_chars_ptr) aligned, 309 2 count fixed bin (8) unaligned, 310 2 chars (3) char (1) unaligned; 311 312 dcl 1 special_chars_struc_old aligned based, 313 2 version fixed bin, 314 2 default fixed bin, /* non-zero indicates use default */ 315 2 special_chars, /* same as level-1 above */ 316 /* has to be spelled out instead of using like */ 317 /* because of refer options */ 318 3 nl_seq aligned like c_chars_old, /* new-line sequence */ 319 3 cr_seq aligned like c_chars_old, /* carriage-return sequence */ 320 3 bs_seq aligned like c_chars_old, /* backspace sequence */ 321 3 tab_seq aligned like c_chars_old, /* horizontal tab sequence */ 322 3 vt_seq aligned like c_chars_old, /* vertical tab sequence */ 323 3 ff_seq aligned like c_chars_old, /* form-feed sequence */ 324 3 printer_on aligned like c_chars_old, /* printer-on sequence */ 325 3 printer_off aligned like c_chars_old, /* printer_off sequence */ 326 3 red_ribbon_shift aligned like c_chars_old, /* red ribbon shift sequence */ 327 3 black_ribbon_shift aligned like c_chars_old, /* black ribbon shift sequence */ 328 3 end_of_page aligned like c_chars_old, /* end-of-page warning sequence */ 329 3 escape_length fixed bin, /* number of escape sequences */ 330 3 not_edited_escapes (sc_escape_len refer (special_chars_struc_old.escape_length)) like c_chars_old, 331 /* use in ^edited mode */ 332 3 edited_escapes (sc_escape_len refer (special_chars_struc_old.escape_length)) like c_chars_old, 333 /* use in edited mode */ 334 3 input_escapes aligned, 335 4 len fixed bin (8) unaligned, /* length of string */ 336 4 str char (sc_input_escape_len refer (special_chars_struc_old.input_escapes.len)) unaligned, 337 /* escape sequence characters */ 338 3 input_results aligned, 339 4 pad bit (9) unaligned, /* so that strings will look the same */ 340 4 str char (sc_input_escape_len refer (special_chars_struc_old.input_escapes.len)) unaligned; 341 /* results of escape sequences */ 342 343 344 esw = 0; /* this is index entry */ 345 ttybp = addr (tty_buf$); /* get ptrs to tty_buf, tty_data */ 346 lctp = tty_buf.lct_ptr; /* get system pointer to lct */ 347 name = a_name; 348 twx, state = 0; /* init to no information passing state */ 349 call get_devx (name); 350 if ercode ^= 0 351 then return; 352 tty_access_class_ptr = addr (l_tty_access_class); 353 unspec (tty_access_class) = ""b; 354 go to attach; 355 356 tty_attach: 357 entry (a_name, a_event, twx, state, ercode); /* index + event */ 358 event = a_event; 359 esw = 1; /* attach entry */ 360 ttybp = addr (tty_buf$); /* get ptrs to tty_buf, tty_data */ 361 lctp = tty_buf.lct_ptr; /* get system pointer to lct */ 362 name = a_name; 363 twx, state = 0; /* init to no information passing state */ 364 call get_devx (name); 365 if ercode ^= 0 366 then return; 367 tty_access_class_ptr = addr (l_tty_access_class); 368 unspec (tty_access_class) = ""b; /* in case the order doesn't do anything */ 369 call tty_order (devx, "get_required_access_class", tty_access_class_ptr, (0), ercode); 370 if ercode ^= 0 & ercode ^= error_table_$undefined_order_request 371 then return; 372 373 attach: 374 on cleanup call cleaner; 375 call tty_lock$lock_channel (devx, ercode); /* lock the channel */ 376 if ercode ^= 0 377 then return; 378 locked = "1"b; 379 380 lctep = addr (lct.lcte_array (devx)); /* get entry of interest */ 381 if lcte.channel_type ^= 0 /* has to be tty channel */ 382 then go to index_invalid; 383 384 wtcbp = lcte.data_base_ptr; /* pointer to perm per channel data */ 385 tcbp = wtcb.tcb_ptr; /* get tcb pointer */ 386 if ^wtcb.tcb_initialized 387 then call init_tcb; 388 389 if wtcb.hproc = "0"b 390 then do; /* if up for grabs, let him have it */ 391 if pds$processid ^= tc_data$initializer_id 392 then go to index_invalid; 393 wtcb.hproc = pds$processid; 394 end; 395 else if wtcb.hproc = pds$processid /* if he is already boss */ 396 then ; /* then he is ok */ 397 else if wtcb.flags.dialed /* else if channel is dialed (has user) */ 398 then if wtcb.uproc = pds$processid /* and this guy is the user */ 399 then if (esw = 1) & tcb.uproc_attached /* ATTACH & already called ATTACH */ 400 /* only allow one call to tty_attach */ 401 then do; 402 ercode = error_table_$resource_attached; 403 call tty_lock$unlock_channel (devx); 404 return; 405 end; 406 else do; /* tty_index can be called as many times on a channel name as desired */ 407 if ^tcb.uproc_attached 408 then do; /* this is first attach */ 409 if tty_access_class.access_class_set 410 then if ^aim_check_$equal (unspec (pds$access_authorization), tty_access_class.access_class) 411 then do; 412 if ^pds$access_authorization.privileges.comm 413 then do; /* this shouldn't happen unless the process responsible 414* for channel assignments has failed or the user 415* process has reset comm privilege since the assignment */ 416 call display_access_class_ (unspec (pds$access_authorization), 417 user_auth_string); 418 call display_access_class_ (tty_access_class.access_class, 419 aim_attributes_string); 420 call syserr (ANNOUNCE, 421 "tty_attach: ^a (^a) attempted invalid attachment of ^a (^a)", 422 pds$process_group_id, user_auth_string, name, aim_attributes_string); 423 go to index_invalid; 424 end; /* no AIM privilege */ 425 end; /* channel auth differs from process auth */ 426 end; /* first attach */ 427 end; /* tty_index or first attach */ 428 else go to index_invalid; /* else he is not user, and cant do anything */ 429 else do; /* else channel not dialed up, and not boss */ 430 index_invalid: 431 ercode = error_table_$io_no_permission; /* give him error code */ 432 call tty_lock$unlock_channel (devx); /* unlock channel now */ 433 return; /* thats all we let him do */ 434 end; 435 if wtcb.flags.dialed /* compute state */ 436 then state = DIALED_UP; /* dialed up */ 437 else if wtcb.flags.masked /* masked by FNP */ 438 then state = MASKED_STATE; 439 else if wtcb.flags.listen 440 then state = LISTENING; /* listening for ring */ 441 else state = IGNORE; /* ignoreing */ 442 443 ercode = 0; 444 twx = devx; /* return tty index */ 445 446 if wtcb.flags.dialed 447 then do; /* if dialed */ 448 wtcb.uproc = pds$processid; /* he is using process */ 449 tcb.uproc_attached = "1"b; 450 end; 451 452 wtcb.qflag, wtcb.qenable = "0"b; /* but he may not expect quits */ 453 wtcb.dialing, wtcb.dial_status_valid = ""b; /* not dialing, no dial status */ 454 wtcb.dial_status_code = 0; 455 if esw = 1 456 then go to eret; /* must also record event */ 457 call tty_lock$unlock_channel (devx); /* unlock the channel */ 458 459 return; 460 461 tty_event: 462 entry (twx, a_event, state, ercode); /* to change tty events signaled */ 463 464 event = a_event; 465 state = 0; 466 467 on cleanup call cleaner; 468 call setup (state); /* set up normal variables and check access */ 469 if ercode ^= 0 470 then return; 471 472 if wtcb.flags.dialed 473 then wtcb.uproc = pds$processid; /* this guy gets to use it */ 474 475 eret: 476 wtcb.event = event; /* copy as user event channel */ 477 if wtcb.hproc = pds$processid 478 then /* and if this guy is the boss */ 479 wtcb.hevent = event; /* copy as boss event too */ 480 481 call tty_lock$unlock_channel (devx); /* unlock the channel */ 482 483 return; 484 485 tty_get_name: 486 entry (twx, a_name, state, ercode); /* to return channel name given devx */ 487 488 devx = twx; 489 uproc_required_for_setup = "0"b; 490 call setup (state); 491 if ercode ^= 0 492 then return; 493 494 lcntp = lct.lcnt_ptr; 495 a_name = lcnt.names (devx); 496 call tty_lock$unlock_channel (devx); 497 return; 498 499 init_channel: 500 entry (twx, a_argptr, a_data_base_ptr, ercode); 501 502 devx = twx; /* move to internal */ 503 argptr = a_argptr; 504 a_data_base_ptr = null; 505 ercode = 0; 506 507 if ^ever_initialized 508 then do; 509 call tty_interrupt$set_static; /* to copy error codes into wired internal static */ 510 ever_initialized = "1"b; /* so we don't do this again */ 511 end; 512 513 call tty_space_man$get_space (size (wtcb), wtcbp); 514 515 if wtcbp = null 516 then do; /* no room for it? */ 517 ercode = error_table_$notalloc; 518 return; 519 end; 520 521 on area go to tcb_not_done; 522 on storage go to tcb_not_done; 523 call tty_area_manager$allocate (size (tcb), tcbp); 524 revert area; 525 revert storage; 526 527 unspec (wtcb) = "0"b; /* start in known state */ 528 wtcb.tcb_ptr = tcbp; /* set the data base correctly */ 529 wtcb.devx = devx; 530 unspec (tcb) = "0"b; /* start this in known state also */ 531 call init_tcb; /* start filling in the variables */ 532 a_data_base_ptr = wtcbp; /* and the output arg */ 533 return; 534 535 tcb_not_done: 536 ercode = error_table_$notalloc; /* we had a problem */ 537 return; 538 539 terminate_channel: 540 entry (a_data_base_ptr, ercode); 541 542 ercode = 0; 543 wtcbp = a_data_base_ptr; /* get to internal */ 544 tcbp = wtcb.tcb_ptr; 545 546 call init_tcb_tables; 547 call tty_area_manager$free (size (tcb), tcbp); /* clean out the tcb */ 548 549 call tty_space_man$free_space (size (wtcb), wtcbp); 550 /* and get rid of wtcb */ 551 if wtcbp ^= null 552 then do; /* wtcb still around for some reason? */ 553 ercode = error_table_$action_not_performed; 554 return; 555 end; 556 557 return; 558 559 tty_abort: 560 entry (twx, resetsw, state, ercode); /* to reset read or write buffers */ 561 562 state = 0; 563 564 on cleanup call cleaner; 565 call setup (state); /* do setup */ 566 if ercode ^= 0 567 then return; 568 if wtcb.flags.dialed /* if any buffers to reset */ 569 then do; 570 rw_switch = bit (fixed (resetsw, 2)); /* first bit is resetwrite, 2nd is -read */ 571 if substr (rw_switch, 1, 1) /* asking for resetwrite */ 572 then do; 573 if wtcb.write_first ^= 0 574 then do; 575 call tty_space_man$free_chain (devx, OUTPUT, ptr (ttybp, wtcb.write_first)); 576 wtcb.write_first, wtcb.write_last = 0; 577 end; 578 if wtcb.end_frame /* if at end of page, reset */ 579 then do; 580 wtcb.actline = 0; 581 wtcb.end_frame = "0"b; 582 end; 583 584 end; 585 if substr (rw_switch, 2, 1) /* if read buffer to be reset */ 586 then do; 587 if wtcb.fblock ^= 0 /* if a chain there */ 588 then do; 589 call tty_space_man$free_chain (devx, INPUT, ptr (ttybp, wtcb.fblock)); 590 wtcb.nramsgs = 0; 591 wtcb.fblock, wtcb.lblock = 0; /* no more input chain */ 592 end; /* tell the 355 not to send current input */ 593 wtcb.fchar = 0; 594 end; 595 596 call channel_manager$control (devx, "abort", addr (rw_switch), code); 597 if code ^= 0 598 then if code = error_table_$undefined_order_request 599 then code = 0; 600 ercode = code; /* and stop any current writes */ 601 end; 602 603 call tty_lock$unlock_channel (devx); /* unlock the channel */ 604 605 return; 606 607 tty_state: 608 entry (twx, state, ercode); /* go get state of tty */ 609 610 state = 0; 611 612 on cleanup call cleaner; 613 call setup (state); /* get normal variables */ 614 call tty_lock$unlock_channel (devx); /* unlock the channel */ 615 616 return; 617 618 tty_detach: 619 entry (twx, dflag, state, ercode); /* to detach tty */ 620 621 dcl pflag bit (1); /* which entry switch */ 622 623 pflag = "0"b; /* not new proc call */ 624 go to detcom; 625 626 new_proc: 627 entry (twx, nproc, state, ercode); /* to switch tty to new process */ 628 629 pflag = "1"b; 630 631 detcom: 632 state = 0; 633 on cleanup call cleaner; 634 call setup (state); /* set up */ 635 if ercode ^= 0 636 then return; 637 638 if pflag /* if new process call */ 639 then do; 640 if wtcb.hproc = pds$processid /* if initializer wants */ 641 then do; 642 wtcb.event = 0; /* so as not to send wakeup on bogus event channel */ 643 wtcb.uproc = nproc; 644 tcb.uproc_attached = "0"b; 645 end; 646 else go to illdet; /* everybody to stay in assigned seat */ 647 end; 648 else if dflag = 0 /* check disposition */ 649 then do; 650 if wtcb.flags.dialed /* if a control block */ 651 then do; 652 if wtcb.hproc = pds$processid /* .. and if this is the boss */ 653 then wtcb.uproc = "0"b; /* place tty up for grabs */ 654 tcb.uproc_attached = "0"b; /* always mark as detached */ 655 end; 656 end; 657 else if wtcb.hproc = pds$processid /* if boss process */ 658 then do; 659 wtcb.flags.listen = "0"b; /* shut off channel */ 660 call channel_manager$control (devx, "hangup", null, ercode); 661 wtcb.hproc = "0"b; /* advertise tty looking for new boss */ 662 state = IGNORE; 663 end; 664 else go to illdet; /* some evil disposition and not boss */ 665 666 if wtcb.flags.dialed 667 then wtcb.flags.wflag, wtcb.flags.rflag = "0"b; /* force wakeups */ 668 669 call tty_lock$unlock_channel (devx); /* unlock the channel */ 670 671 return; 672 673 674 tty_order: 675 entry (twx, a_order, a_argptr, state, ercode); /* to give tty orders */ 676 677 678 order = a_order; 679 argptr = a_argptr; 680 681 ttytp = addr (tty_tables$); 682 683 on cleanup call cleaner; 684 if order = "get_meters" /* let anyone do this */ 685 then uproc_required_for_setup = "0"b; /* it's initialized to "1"b */ 686 else if order = "get_required_access_class" 687 then /* let user do this before attach */ 688 uproc_attach_required_for_setup = "0"b; 689 690 call setup (state); /* set up */ 691 if ercode ^= 0 692 then return; 693 694 if wtcb.masked /* can't do most things to a masked channel */ 695 then if order ^= "unmask" & order ^= "get_meters" & order ^= "copy_meters" 696 then do; 697 ercode = error_table_$masked_channel; 698 go to unlock; 699 end; 700 701 if order = "modes" 702 then call tty_modes (wtcbp, argptr, ercode); 703 704 else if order = "listen" /* listen for dialup */ 705 then do; 706 call forward_order (); 707 wtcb.flags.listen = "1"b; 708 if wtcb.flags.dialed /* get state */ 709 then state = DIALED_UP; 710 else state = LISTENING; 711 end; 712 713 else if order = "copy_meters" 714 then do; 715 if wtcb.hproc ^= pds$processid 716 then do; /* only owner can do this */ 717 ercode = error_table_$io_no_permission; 718 go to unlock; 719 end; 720 721 tcb.saved_meters = tcb.cumulative_meters; 722 tcb.time_dialed = clock (); 723 call forward_order (); 724 end; 725 726 else if order = "line_length" /* set line length */ 727 then do; 728 if ^wtcb.flags.dialed /* if data base exists */ 729 then go to error; 730 tcb.colmax = ll; 731 end; 732 733 else if order = "terminal_info" 734 then do; 735 terminal_info_ptr = argptr; 736 if terminal_info.version ^= terminal_info_version 737 then go to wrong_version; 738 if ^wtcb.flags.dialed 739 then terminal_info.id = ""; 740 else terminal_info.id = tcb.id; 741 terminal_info.term_type = tcb.terminal_type; 742 terminal_info.line_type = wtcb.line_type; 743 terminal_info.baud_rate = wtcb.baud_rate; 744 end; 745 746 else if order = "info" /* get baud rate, id and type */ 747 then do; 748 argptr -> info.baud_rate = wtcb.baud_rate; /* fill in baud rate */ 749 argptr -> info.line_type = wtcb.line_type; 750 if ^wtcb.flags.dialed /* if data not there */ 751 then do; 752 argptr -> info.id = " "; /* fake it */ 753 argptr -> info.tw_type = 0; 754 end; 755 else do; 756 argptr -> info.id = tcb.id; /* pull info from data base */ 757 argptr -> info.tw_type = tcb.old_type; 758 end; 759 end; 760 761 else if order = "quit_enable" /* turn on quits? */ 762 then wtcb.qenable = "1"b; 763 764 else if order = "quit_disable" /* turn off quits? */ 765 then wtcb.qenable = "0"b; 766 767 else if order = "start" /* kick user? */ 768 then do; 769 if ^wtcb.flags.dialed 770 then go to error; 771 unspec (net_event_message) = "0"b; 772 net_event_message.version = NET_EVENT_MESSAGE_VERSION_1; 773 net_event_message.network_type = MCS_NETWORK_TYPE; 774 net_event_message.handle = devx; 775 net_event_message.type = MCS_UNSPECIFIED_MSG; 776 call pxss$ring_0_wakeup (wtcb.uproc, wtcb.event, net_event_message_arg, 0); 777 /* wakeup the user */ 778 end; 779 780 else if order = "read_status" 781 then do; /* look to see if we have any */ 782 if ^wtcb.flags.dialed 783 then go to error; 784 785 if wtcb.flags.line_status_present 786 then do; /* must complain about unprocessed status */ 787 ercode = error_table_$line_status_pending; 788 go to unlock; 789 end; 790 791 if wtcb.error_code ^= 0 792 then do; 793 ercode = wtcb.error_code; 794 wtcb.error_code = 0; 795 go to unlock; 796 end; 797 798 if wtcb.input_available | wtcb.fblock ^= 0 799 then rd_stat.input_available = "1"b; 800 else do; 801 rd_stat.input_available = "0"b; 802 if ^wtcb.flags.rflag & (wtcb.prompt_len > 0 | is_parent_mpx (UNCP_MPX)) 803 then do; /* UNCP needs this to turn line around */ 804 rawom = tcb.rawom; 805 tcb.rawom = "1"b; /* write prompt in rawo mode */ 806 call tty_write$locked (devx, addr (wtcb.prompt), 0, (wtcb.prompt_len), 0, 0, code); 807 tcb.rawom = rawom; 808 end; 809 wtcb.flags.rflag = "1"b; 810 end; 811 end; 812 813 else if order = "write_status" 814 then do; /* check for pending output */ 815 if ^wtcb.flags.dialed 816 then go to error; 817 if wtcb.flags.line_status_present 818 then do; /* must complain about unprocessed status */ 819 ercode = error_table_$line_status_pending; 820 go to unlock; 821 end; 822 823 if wtcb.error_code ^= 0 824 then do; 825 ercode = wtcb.error_code; 826 wtcb.error_code = 0; 827 go to unlock; 828 end; 829 830 code = 0; 831 if wtcb.write_first ^= 0 832 then wr_stat.output_pending = "1"b; 833 else do; 834 call channel_manager$control (devx, "write_status", argptr, code); 835 if code ^= 0 836 then if code = error_table_$undefined_order_request 837 /* multiplexer is ignorant of this */ 838 then do; 839 code = 0; 840 wr_stat.output_pending = "0"b; 841 end; 842 ercode = code; 843 end; 844 845 if code = 0 846 then if wr_stat.output_pending 847 then wtcb.flags.wflag = "1"b; /* get wakeup when it is gone */ 848 end; 849 850 851 else if order = "refuse_printer_off" 852 then tcb.no_printer_off = "1"b; 853 854 else if order = "accept_printer_off" 855 then tcb.no_printer_off = "0"b; 856 857 else if order = "printer_off" /* turn printer off */ 858 then do; 859 if ^wtcb.flags.dialed 860 then go to error; 861 862 if tcb.modes.echoplex 863 then call alter_mode ("echoplex", "0"b); /* stop echoing to stop printing */ 864 else call turn_printer_off (ercode); 865 866 if ercode = 0 867 then if tcb.modes.replay /* don't want any replay while printing disabled */ 868 then call alter_mode ("replay", "0"b); 869 end; 870 871 else if order = "printer_on" /* turn printer on */ 872 then do; 873 if ^wtcb.flags.dialed 874 then go to error; 875 876 if tcb.modes.echoplex 877 then call alter_mode ("echoplex", "1"b); 878 else call turn_printer_on (ercode); 879 880 if ercode = 0 881 then if tcb.replay /* must reactivate this mode */ 882 then call alter_mode ("replay", "1"b); 883 end; 884 885 else if order = "set_terminal_data" 886 then do; 887 ttdp = argptr; /* set ptr to terminal_type_data info structure */ 888 if terminal_type_data.version > ttd_version_3 | terminal_type_data.version <= 0 889 then go to wrong_version; 890 891 new_tablerp (*) = (18)"1"b; /* init new table rel ptrs */ 892 ntpp = addr (terminal_type_data.tables); /* set ptr to new_tablep array */ 893 code = 0; 894 do table_type = 1 to 6 while (code = 0); /* add the new tables */ 895 call add_table (table_type, new_tablep (table_type), new_tablerp (table_type), code); 896 end; 897 898 if code ^= 0 /* could not add all the new tables */ 899 then do; /* must delete any we did add */ 900 do table_type = 1 to 6 while (new_tablerp (table_type) ^= (18)"1"b); 901 if new_tablerp (table_type) ^= ""b /* a real table was added */ 902 then call tty_tables_mgr$delete (new_tablerp (table_type), 0); 903 end; 904 ercode = code; /* give user the bad news */ 905 go to unlock; 906 end; 907 908 trpp = addr (tcb.tables); /* set ptr to tablerp array */ 909 dftrpp = addr (tcb.default_tables); /* set ptr to df_tablerp array */ 910 do table_type = 1 to 6; /* now assign the new tables in the tcb */ 911 if tablerp (table_type) ^= ""b /* dispose of any previous tables */ 912 then call tty_tables_mgr$delete (tablerp (table_type), 0); 913 if df_tablerp (table_type) ^= (18)"1"b & df_tablerp (table_type) ^= ""b 914 then call tty_tables_mgr$delete (df_tablerp (table_type), 0); 915 tablerp (table_type) = new_tablerp (table_type); 916 /* set the current table */ 917 df_tablerp (table_type) = (18)"1"b; /* default table is same as current table */ 918 end; 919 920 if tcb.modes.echoplex | tcb.modes.echo_cr | tcb.modes.echo_lf 921 then call send_delay_table; 922 923 tcb.old_type = terminal_type_data.old_type; 924 tcb.terminal_type = terminal_type_data.name; 925 tcb.erase = terminal_type_data.erase; 926 tcb.kill = terminal_type_data.kill; 927 928 tcb.frame_begin = terminal_type_data.frame_begin; 929 tcb.frame_end = terminal_type_data.frame_end; 930 if tcb.frame_end ^= NUL 931 then do; /* ship framing chars to FNP */ 932 sfc.frame_begin = tcb.frame_begin; 933 sfc.frame_end = tcb.frame_end; 934 call channel_manager$control (devx, "set_framing_chars", addr (sfc), ercode); 935 end; 936 937 if terminal_type_data.line_delimiter ^= low (1) 938 then wtcb.line_delimiter = terminal_type_data.line_delimiter; 939 sw = terminal_type_data.keyboard_locking; 940 if sw ^= tcb.keyboard_locking /* change to keyboard locking */ 941 then if sw & wtcb.line_type ^= LINE_ASCII 942 then ; /* invalid change, ignore it */ 943 else do; /* make the change */ 944 tcb.keyboard_locking = sw; 945 if ^(tcb.modes.full_duplex | tcb.modes.echoplex) 946 /* keyboard locking possible */ 947 then call channel_manager$control (devx, "lock", addr (sw), ercode); 948 /* pass it on down */ 949 end; 950 951 if terminal_type_data.version >= ttd_version_2 952 /* version 2 includes flow control */ 953 then do; 954 if terminal_type_data.input_resume ^= NUL 955 then do; 956 tcb.input_resume_seq.count = 1; 957 substr (tcb.input_resume_seq.chars, 1, 1) = terminal_type_data.input_resume; 958 if terminal_type_data.input_suspend = NUL 959 then tcb.input_suspend_seq.count = 0; 960 else do; 961 tcb.input_suspend_seq.count = 1; 962 substr (tcb.input_suspend_seq.chars, 1, 1) = terminal_type_data.input_suspend; 963 end; 964 965 unspec (auto_ifc.suspend_seq) = unspec (tcb.input_suspend_seq); 966 unspec (auto_ifc.resume_seq) = unspec (tcb.input_resume_seq); 967 auto_ifc.timeout = terminal_type_data.input_timeout; 968 call channel_manager$control (devx, "input_flow_control_chars", addr (auto_ifc), ercode); 969 end; 970 971 else if tcb.input_resume_seq.count ^= 0 /* used to have one */ 972 then do; /* must turn it off now */ 973 tcb.input_suspend_seq.count = 0; 974 tcb.input_resume_seq.count = 0; 975 auto_ifc.suspend_seq.count = 0; 976 auto_ifc.resume_seq.count = 0; 977 call channel_manager$control (devx, "input_flow_control_chars", addr (auto_ifc), ercode); 978 end; 979 980 if terminal_type_data.output_resume_ack ^= NUL 981 then do; 982 tcb.output_suspend_etb_seq.count = 1; 983 tcb.output_resume_ack_seq.count = 1; 984 substr (tcb.output_suspend_etb_seq.chars, 1, 1) = terminal_type_data.output_suspend_etb; 985 substr (tcb.output_resume_ack_seq.chars, 1, 1) = terminal_type_data.output_resume_ack; 986 987 unspec (auto_ofc.suspend_or_etb_seq) = unspec (tcb.output_suspend_etb_seq); 988 unspec (auto_ofc.resume_or_ack_seq) = unspec (tcb.output_resume_ack_seq); 989 tcb.block_acknowledge, auto_ofc.block_acknowledge = terminal_type_data.output_block_acknowledge; 990 auto_ofc.suspend_resume = ^terminal_type_data.output_block_acknowledge; 991 auto_ofc.mbz = ""b; 992 auto_ofc.buffer_size = terminal_type_data.output_buffer_size; 993 tcb.max_output_block = divide (terminal_type_data.output_buffer_size, 2, 18, 0); 994 call channel_manager$control (devx, "output_flow_control_chars", addr (auto_ofc), ercode); 995 end; 996 997 else if tcb.output_resume_ack_seq.count ^= 0 | tcb.max_output_block ^= 0 998 then do; /* something to turn off */ 999 tcb.output_suspend_etb_seq.count = 0; 1000 tcb.output_resume_ack_seq.count = 0; 1001 tcb.max_output_block = 0; 1002 tcb.block_acknowledge = "0"b; 1003 1004 if tcb.oflow /* force it off */ 1005 then do; 1006 auto_mode.len = 6; 1007 auto_mode.str = "^oflow"; 1008 call tty_modes (wtcbp, addr (auto_mode), (0)); 1009 end; 1010 1011 auto_ofc.block_acknowledge = "0"b; 1012 auto_ofc.suspend_resume = "0"b; 1013 auto_ofc.mbz = ""b; 1014 auto_ofc.buffer_size = 0; 1015 auto_ofc.suspend_or_etb_seq.count = 0; 1016 auto_ofc.resume_or_ack_seq.count = 0; 1017 call channel_manager$control (devx, "output_flow_control_chars", addr (auto_ofc), ercode); 1018 end; 1019 end; 1020 end; 1021 1022 else if order = "store_id" /* store answerback id for later use */ 1023 then do; 1024 if ^wtcb.flags.dialed 1025 then go to error; 1026 tcb.id = argptr -> inid; 1027 end; 1028 1029 else if order = "wru" 1030 then if pds$processid = wtcb.hproc 1031 then do; 1032 if ^wtcb.flags.dialed 1033 then go to error; 1034 1035 if wtcb.flags.line_status_present 1036 then do; /* must complain about unprocessed status */ 1037 ercode = error_table_$line_status_pending; 1038 go to unlock; 1039 end; 1040 1041 if wtcb.error_code ^= 0 1042 then do; 1043 ercode = wtcb.error_code; 1044 wtcb.error_code = 0; 1045 go to unlock; 1046 end; 1047 1048 call forward_order (); 1049 wtcb.flags.wru, wtcb.flags.rflag = "1"b; 1050 end; 1051 else go to error; 1052 1053 else if order = "interrupt" 1054 then if wtcb.line_type = LINE_ASCII 1055 then do; 1056 if ^wtcb.flags.dialed 1057 then go to error; 1058 1059 if wtcb.flags.line_status_present 1060 then do; /* must complain about unprocessed status */ 1061 ercode = error_table_$line_status_pending; 1062 go to unlock; 1063 end; 1064 1065 if wtcb.error_code ^= 0 1066 then do; 1067 ercode = wtcb.error_code; 1068 wtcb.error_code = 0; 1069 go to unlock; 1070 end; 1071 1072 call forward_order (); 1073 end; 1074 else go to error; 1075 1076 else if order = "set_input_message_size" 1077 then do; 1078 if ^wtcb.sync_line 1079 then go to error; 1080 1081 if argptr -> based_arg > 2048 1082 then do; /* can't set message size > exhaust limit */ 1083 ercode = error_table_$buffer_big; 1084 go to unlock; 1085 end; 1086 1087 call forward_order (); 1088 tcb.input_msg_size = argptr -> based_arg; 1089 end; 1090 1091 else if order = "get_input_message_size" 1092 then do; 1093 if ^wtcb.sync_line 1094 then go to error; 1095 argptr -> based_arg = tcb.input_msg_size; 1096 1097 end; 1098 1099 else if order = "start_xmit_hd" 1100 then do; 1101 if wtcb.line_type ^= LINE_ARDS 1102 then go to error; 1103 1104 call forward_order (); 1105 end; 1106 1107 else if order = "stop_xmit_hd" 1108 then do; 1109 if wtcb.line_type ^= LINE_ARDS 1110 then go to error; 1111 1112 call forward_order (); 1113 end; 1114 1115 else if order = "set_line_type" 1116 then do; 1117 if argptr = null 1118 then go to error; /* you have tell us what */ 1119 if wtcb.flags.listen 1120 then go to error; /* it's too late to change line types */ 1121 if new_line_type <= 0 | new_line_type > max_line_type 1122 /* invalid line_type */ 1123 then go to error; 1124 if new_line_type = LINE_1050 | new_line_type = LINE_2741 | new_line_type = LINE_ARDS 1125 | new_line_type = LINE_ETX /* The 1050, 2741, ETX and ARDS line types are no longer valid. */ 1126 then go to error; 1127 1128 call forward_order (); 1129 wtcb.line_type = new_line_type; 1130 do i = 1 to n_sync_line_types while (new_line_type ^= sync_line_type (i)); 1131 end; 1132 wtcb.sync_line = (i <= n_sync_line_types); 1133 end; 1134 1135 else if order = "dial_out" 1136 then do; 1137 if pds$processid ^= wtcb.hproc 1138 then go to illdet; /* wtcb must be owned by caller */ 1139 if argptr = null () 1140 then go to error; /* you have to give me a phone number */ 1141 if wtcb.flags.dialed 1142 then go to error; /* can't dial out, line is already being used */ 1143 if wtcb.dialing 1144 then go to error; /* can't dial while dialing */ 1145 1146 if wtcb.flags.line_status_present 1147 then do; /* must complain about unprocessed status */ 1148 ercode = error_table_$line_status_pending; 1149 go to unlock; 1150 end; 1151 1152 if wtcb.error_code ^= 0 1153 then do; 1154 ercode = wtcb.error_code; 1155 wtcb.error_code = 0; 1156 go to unlock; 1157 end; 1158 1159 phone_data = arg_varying_char32; 1160 1161 /* phone number looks ok */ 1162 wtcb.dialing = "1"b; /* remember what we are doing */ 1163 wtcb.dial_status_valid = ""b; /* no status yet */ 1164 wtcb.dial_status_code = 0; /* zero code */ 1165 call channel_manager$control (devx, order, addr (phone_data), ercode); 1166 if ercode ^= 0 1167 then wtcb.dialing = "0"b; /* multiplexer rejected it, so we're not really dialing */ 1168 /* otherwise, status will be returned via interrupt when the dial_out completes */ 1169 /* so we're all done */ 1170 end; 1171 1172 else if order = "dial_out_status" 1173 then do; /* caller wants result of dial */ 1174 if ^wtcb.dialing 1175 then goto error; /* not dialing */ 1176 if wtcb.dial_status_valid 1177 then do; /* is there status yet? */ 1178 if wtcb.dial_status_code = 0 1179 then ercode = 0; 1180 else if wtcb.dial_status_code = acu_no_power 1181 then ercode = error_table_$device_not_usable; 1182 else if wtcb.dial_status_code = acu_line_occupied 1183 then ercode = error_table_$invalid_state; 1184 else if wtcb.dial_status_code = acu_dial_failure 1185 then ercode = error_table_$no_connection; 1186 else if wtcb.dial_status_code = acu_no_good 1187 then ercode = error_table_$no_operation; 1188 else if wtcb.dial_status_code = terminal_rejected 1189 then ercode = error_table_$no_wired_structure; 1190 else ercode = wtcb.dial_status_code; 1191 wtcb.dial_status_valid = ""b; /* can only get status once */ 1192 wtcb.dialing = ""b; 1193 wtcb.dial_status_code = 0; 1194 end; 1195 else ercode = error_table_$request_pending; 1196 end; 1197 1198 else if order = "line_status" 1199 then do; 1200 if ^wtcb.flags.dialed 1201 then go to error; 1202 if wtcb.flags.line_status_present 1203 then do; /* good call */ 1204 argptr -> bit72 = wtcb.line_status; 1205 wtcb.line_status = "0"b; 1206 wtcb.flags.line_status_present = "0"b; 1207 end; 1208 else ercode = error_table_$no_line_status; /* bad call */ 1209 end; 1210 1211 else if order = "line_control" 1212 then do; 1213 if ^wtcb.flags.dialed 1214 then go to error; 1215 if wtcb.flags.line_status_present 1216 then do; /* must complain about unprocessed status */ 1217 ercode = error_table_$line_status_pending; 1218 go to unlock; 1219 end; 1220 1221 if wtcb.error_code ^= 0 1222 then do; 1223 ercode = wtcb.error_code; 1224 wtcb.error_code = 0; 1225 go to unlock; 1226 end; 1227 1228 call forward_order (); 1229 end; 1230 1231 else if order = "set_line_status_enabled" /* control whether to report line_status */ 1232 then do; 1233 if argptr = null () 1234 then do; 1235 ercode = error_table_$null_info_ptr; 1236 go to unlock; 1237 end; 1238 1239 wtcb.line_status_disabled = ^(argptr -> bit1); 1240 if wtcb.line_status_disabled 1241 then do; /* if disabling it */ 1242 wtcb.line_status_present = "0"b; /* if there was one already, discard it */ 1243 wtcb.line_status = ""b; 1244 end; 1245 end; 1246 1247 else if order = "get_line_status_enabled" /* user wants to see if line_status is enabled */ 1248 then do; 1249 if argptr = null () 1250 then do; 1251 ercode = error_table_$null_info_ptr; 1252 go to unlock; 1253 end; 1254 1255 argptr -> bit1 = ^wtcb.line_status_disabled; 1256 end; 1257 1258 else if order = "unmask" 1259 then if pds$processid ^= wtcb.hproc 1260 then do; 1261 code = error_table_$io_no_permission; 1262 go to unlock; 1263 end; 1264 1265 else if wtcb.masked 1266 then do; 1267 wtcb.masked = "0"b; 1268 state = IGNORE; /* now it's just hung up */ 1269 end; 1270 else ; /* a nop if channel wasn't masked */ 1271 1272 else if order = "set_editing_chars" 1273 then do; 1274 if ^wtcb.flags.dialed 1275 then go to error; 1276 if editing_chars.version < 2 | editing_chars.version > 3 1277 then go to wrong_version; 1278 1279 if search (editing_chars.chars, white_space) ^= 0 1280 | substr (editing_chars.chars, 1, 1) = substr (editing_chars.chars, 2, 1) 1281 then ercode = error_table_$inconsistent; 1282 1283 else do; 1284 if substr (editing_chars.chars, 1, 1) ^= " " 1285 then tcb.erase = substr (editing_chars.chars, 1, 1); 1286 1287 if substr (editing_chars.chars, 2, 1) ^= " " 1288 then tcb.kill = substr (editing_chars.chars, 2, 1); 1289 1290 end; 1291 end; 1292 1293 else if order = "get_editing_chars" 1294 then if ^wtcb.flags.dialed 1295 then go to error; 1296 else do; 1297 if editing_chars.version < 2 | editing_chars.version > 3 1298 then go to wrong_version; 1299 editing_chars.chars = addr (tcb.special_input_chars) -> two_chars; 1300 end; 1301 1302 else if order = "set_framing_chars" 1303 then do; 1304 if wtcb.sync_line 1305 then go to error; 1306 1307 if (framing_chars.frame_end = NUL & framing_chars.frame_begin ^= NUL) 1308 /* can't have begin without end */ 1309 then ercode = error_table_$inconsistent; 1310 1311 else do; 1312 call forward_order (); 1313 tcb.frame_begin = framing_chars.frame_begin; 1314 tcb.frame_end = framing_chars.frame_end; 1315 1316 end; 1317 end; 1318 1319 else if order = "input_flow_control_chars" 1320 then do; 1321 if ^wtcb.flags.dialed 1322 then go to error; 1323 if (argptr -> input_flow_control_info.resume_seq.count = 0 1324 & argptr -> input_flow_control_info.suspend_seq.count ^= 0) 1325 | (argptr -> input_flow_control_info.suspend_seq.count = 0 1326 & argptr -> input_flow_control_info.resume_seq.count ^= 0 1327 & ^argptr -> input_flow_control_info.timeout) 1328 then ercode = error_table_$improper_data_format; 1329 else do; 1330 tcb.input_suspend_seq = argptr -> input_flow_control_info.suspend_seq; 1331 tcb.input_resume_seq = argptr -> input_flow_control_info.resume_seq; 1332 call forward_order (); 1333 end; 1334 end; 1335 1336 else if order = "output_flow_control_chars" 1337 then do; 1338 if ^wtcb.flags.dialed 1339 then go to error; 1340 if argptr -> output_flow_control_info.suspend_resume & argptr -> output_flow_control_info.block_acknowledge 1341 then go to bad_ofc; /* must be one or the other */ 1342 1343 sus_count = argptr -> output_flow_control_info.suspend_or_etb_seq.count; 1344 res_count = argptr -> output_flow_control_info.resume_or_ack_seq.count; 1345 1346 if argptr -> output_flow_control_info.block_acknowledge 1347 then if argptr -> output_flow_control_info.buffer_size = 0 1348 then if (tcb.max_output_block = 0 & (res_count + sus_count ^= 0)) 1349 /* not already set */ 1350 | (res_count = 0 & sus_count ^= 0) | (sus_count = 0 & res_count ^= 0) 1351 /* or not setting chars */ 1352 then go to bad_ofc; 1353 else ; 1354 1355 else tcb.max_output_block = divide (argptr -> output_flow_control_info.buffer_size, 2, 18, 0); 1356 /* set block size to half of buffer size */ 1357 1358 else if (sus_count = 0 & res_count ^= 0) | (res_count = 0 & sus_count ^= 0) 1359 | (sus_count ^= 0 & sus_count = res_count 1360 & substr (argptr -> output_flow_control_info.suspend_or_etb_seq.chars, 1, sus_count) 1361 = substr (argptr -> output_flow_control_info.resume_or_ack_seq.chars, 1, res_count)) 1362 /* suspend_resume, must specify chars, and they must be different */ 1363 then do; 1364 bad_ofc: 1365 ercode = error_table_$improper_data_format; 1366 go to unlock; 1367 end; 1368 else tcb.max_output_block = 0; 1369 1370 if sus_count ^= 0 | (sus_count = 0 & res_count = 0 & argptr -> output_flow_control_info.buffer_size = 0) 1371 /* setting some sequence or turning it all off */ 1372 then do; 1373 tcb.output_suspend_etb_seq = argptr -> output_flow_control_info.suspend_or_etb_seq; 1374 tcb.output_resume_ack_seq = argptr -> output_flow_control_info.resume_or_ack_seq; 1375 end; 1376 tcb.block_acknowledge = argptr -> output_flow_control_info.block_acknowledge; 1377 1378 call forward_order (); 1379 end; 1380 1381 else if order = "get_framing_chars" 1382 then do; 1383 framing_chars.frame_begin = tcb.frame_begin; 1384 framing_chars.frame_end = tcb.frame_end; 1385 end; 1386 1387 else if order = "get_ifc_info" 1388 then do; 1389 argptr -> input_flow_control_info.suspend_seq = tcb.input_suspend_seq; 1390 argptr -> input_flow_control_info.resume_seq = tcb.input_resume_seq; 1391 end; 1392 1393 else if order = "get_ofc_info" 1394 then do; 1395 argptr -> output_flow_control_info.block_acknowledge = tcb.block_acknowledge; 1396 argptr -> output_flow_control_info.suspend_resume = 1397 (^tcb.block_acknowledge) & (tcb.output_suspend_etb_seq.count ^= 0); 1398 argptr -> output_flow_control_info.buffer_size = 2 * tcb.max_output_block; 1399 argptr -> output_flow_control_info.suspend_or_etb_seq = tcb.output_suspend_etb_seq; 1400 argptr -> output_flow_control_info.resume_or_ack_seq = tcb.output_resume_ack_seq; 1401 end; 1402 1403 else if order = "set_delay" 1404 then do; 1405 call replace_table (delay_type, ercode); 1406 if ercode = 0 & (tcb.modes.echoplex | tcb.modes.echo_cr | tcb.modes.echo_lf) 1407 then call send_delay_table; 1408 end; 1409 1410 else if order = "set_input_conversion" 1411 then call replace_table (input_cv_type, ercode); 1412 1413 else if order = "set_input_translation" 1414 then call replace_table (input_tr_type, ercode); 1415 1416 else if order = "set_output_conversion" 1417 then call replace_table (output_cv_type, ercode); 1418 1419 else if order = "set_output_translation" 1420 then call replace_table (output_tr_type, ercode); 1421 1422 else if order = "set_special" 1423 then call replace_table (special_type, ercode); 1424 1425 else if order = "set_echo_break_table" 1426 then do; 1427 echo_neg_datap = argptr; 1428 1429 /*** Code to accept version 1 structure for compatibility ***/ 1430 /*** To be REMOVED when Emacs, video and mowse are using ***/ 1431 /*** version 2. ***/ 1432 1433 echo_version_1 = "0"b; 1434 if echo_neg_data.version = echo_neg_data_version_1 1435 then echo_version_1 = "1"b; 1436 else 1437 /**** end compatibility code ****/ 1438 if echo_neg_data.version ^= echo_neg_data_version_2 1439 then go to wrong_version; 1440 1441 if wtcb.echdp = "000000"b3 1442 then do; 1443 call tty_space_man$get_space (size (echo_data), echo_datap); 1444 if echo_datap ^= null () 1445 then wtcb.echdp = rel (echo_datap); 1446 end; 1447 else echo_datap = ptr (ttybp, wtcb.echdp); 1448 if echo_datap = null 1449 then ercode = error_table_$notalloc; 1450 else do; 1451 unspec (echo_data) = ""b; /* For good luck */ 1452 1453 /*** Version 1 structure ***/ 1454 /*** REMOVE when Emacs, video and mowse are using version 2. ***/ 1455 1456 if echo_version_1 1457 then do; 1458 string (echo_data.break) = string (v1_echo_neg_data.break); 1459 substr (string (echo_data.break), 129, 128) = (128)"1"b; 1460 echo_data.rubout_trigger_chars = v1_echo_neg_data.rubout_trigger_chars; 1461 echo_data.rubout_sequence_length = v1_echo_neg_data.rubout_sequence_length; 1462 echo_data.rubout_sequence = v1_echo_neg_data.rubout_sequence; 1463 echo_data.rubout_pad_count = v1_echo_neg_data.rubout_pad_count; 1464 echo_data.buffer_rubouts = v1_echo_neg_data.buffer_rubouts; 1465 end; 1466 1467 else do; 1468 1469 /*** END COMPATIBILITY CODE ****/ 1470 1471 string (echo_data.break) = string (echo_neg_data.break); 1472 echo_data.rubout_trigger_chars = echo_neg_data.rubout_trigger_chars; 1473 echo_data.rubout_sequence_length = echo_neg_data.rubout_sequence_length; 1474 echo_data.rubout_sequence = echo_neg_data.rubout_sequence; 1475 echo_data.rubout_pad_count = echo_neg_data.rubout_pad_count; 1476 echo_data.buffer_rubouts = echo_neg_data.buffer_rubouts; 1477 end; /* of else clause for version 1 */ 1478 /*** REMOVE when Emacs, video and mowse are using version 2. ***/ 1479 1480 call channel_manager$control (devx, "set_echnego_break_table", addr (echo_data.break), (0)); 1481 end; 1482 end; 1483 1484 else if order = "get_delay" 1485 then do; 1486 if ^wtcb.flags.dialed 1487 then go to error; /* obviously can't get it */ 1488 if argptr -> delay_struc.version ^= DELAY_VERSION 1489 then go to wrong_version; 1490 1491 if tcb.delayrp = ""b /* no delays */ 1492 then unspec (argptr -> delay_struc.delay) = ""b; 1493 1494 else argptr -> delay_struc.delay = ptr (ttytp, tcb.delayrp) -> delay; 1495 end; 1496 1497 else if order = "get_special" 1498 then do; 1499 if ^wtcb.flags.dialed 1500 then go to error; 1501 if tcb.specialrp = ""b /* no special chars table */ 1502 then do; 1503 ercode = error_table_$no_table; 1504 go to unlock; 1505 end; 1506 1507 special_ptr = ptr (ttytp, tcb.specialrp); /* prepare to allocate and copy table */ 1508 sc_escape_len = special_ptr -> special_chars.escape_length; 1509 sc_input_escape_len = special_ptr -> special_chars.input_escapes.len; 1510 1511 if get_special_info.version = SPECIAL_INFO_STRUCT_VERSION_1 1512 then old_special_table_version = "0"b; 1513 else old_special_table_version = "1"b; 1514 1515 on area go to no_allocate; 1516 on storage go to no_allocate; 1517 1518 if old_special_table_version 1519 then allocate special_chars_struc_old in (get_special_info_old.area_ptr -> special_area) set (temp_ptr); 1520 else allocate special_chars_struc in (get_special_info.area_ptr -> special_area) set (temp_ptr); 1521 1522 revert area; 1523 revert storage; 1524 1525 if old_special_table_version 1526 then do; 1527 get_special_info_old.table_ptr = temp_ptr; 1528 temp_ptr -> special_chars_struc_old.version = SPECIAL_VERSION; 1529 1530 /* call internal subroutine to transfer new table into old table. If any of 1531* the sequences are too long, it will return non-zero error code */ 1532 call copy_to_old_special_table; 1533 if ercode ^= 0 1534 then do; 1535 free temp_ptr -> special_chars_struc_old in (get_special_info_old.area_ptr -> special_area); 1536 get_special_info_old.table_ptr = null; 1537 go to unlock; 1538 end; 1539 end; 1540 else do; 1541 get_special_info.table_ptr = temp_ptr; 1542 temp_ptr -> special_chars_struc.version = SPECIAL_VERSION_2; 1543 addr (temp_ptr -> special_chars_struc.special_chars) -> special_chars = special_ptr -> special_chars; 1544 end; 1545 end; 1546 1547 else if order = "get_input_conversion" 1548 then call get_table (tcb.input_tctrp); 1549 1550 else if order = "get_input_translation" 1551 then call get_table (tcb.input_mvtrp); 1552 1553 else if order = "get_output_conversion" 1554 then call get_table (tcb.output_tctrp); 1555 1556 else if order = "get_output_translation" 1557 then call get_table (tcb.output_mvtrp); 1558 1559 else if order = "get_echo_break_table" 1560 then do; 1561 if wtcb.echdp = "000000"b3 1562 then ercode = error_table_$no_table; 1563 else do; 1564 echo_datap = ptr (ttybp, wtcb.echdp); 1565 echo_neg_datap = argptr; /* User's stuff */ 1566 1567 /*** Accept version 1 structure for compatibility ***/ 1568 /*** REMOVE when Emacs, video and mowse are using version 2. ***/ 1569 1570 if echo_neg_data.version = echo_neg_data_version_1 1571 then do; 1572 string (v1_echo_neg_data.break) = substr (string (echo_data.break), 1, 128); 1573 /* Copy the bits */ 1574 v1_echo_neg_data.rubout_sequence = echo_data.rubout_sequence; 1575 v1_echo_neg_data.rubout_sequence_length = echo_data.rubout_sequence_length; 1576 v1_echo_neg_data.rubout_pad_count = echo_data.rubout_pad_count; 1577 v1_echo_neg_data.buffer_rubouts = echo_data.buffer_rubouts; 1578 v1_echo_neg_data.rubout_trigger_chars = echo_data.rubout_trigger_chars; 1579 end; 1580 1581 else do; 1582 /*** END OF COMPATIBILITY CODE ***/ 1583 if echo_neg_data.version ^= echo_neg_data_version_2 1584 then go to wrong_version; 1585 string (echo_neg_data.break) = string (echo_data.break); 1586 /* Copy the bits */ 1587 echo_neg_data.rubout_sequence = echo_data.rubout_sequence; 1588 echo_neg_data.rubout_sequence_length = echo_data.rubout_sequence_length; 1589 echo_neg_data.rubout_pad_count = echo_data.rubout_pad_count; 1590 echo_neg_data.buffer_rubouts = echo_data.buffer_rubouts; 1591 echo_neg_data.rubout_trigger_chars = echo_data.rubout_trigger_chars; 1592 end; /* of else clause based on version */ 1593 /*** REMOVE when Emacs, video and mowse are using version 2. ***/ 1594 end; 1595 end; 1596 1597 else if order = "get_meters" 1598 then do; 1599 tty_meterp = argptr -> get_comm_meters_info.subchan_ptr; 1600 if tty_meterp ^= null () 1601 then do; 1602 if tty_channel_meters.version ^= TTY_CHANNEL_METERS_VERSION_1 1603 then go to wrong_version; 1604 tty_channel_meters.last_dialed_time = tcb.time_dialed; 1605 tty_channel_meters.baud_rate = wtcb.baud_rate; 1606 tty_channel_meters.user_process = wtcb.uproc; 1607 tty_channel_meters.breakall = tcb.modes.breakall; 1608 tty_channel_meters.echoplex = tcb.modes.echoplex; 1609 tty_channel_meters.current_meters = tcb.cumulative_meters; 1610 tty_channel_meters.saved_meters = tcb.saved_meters; 1611 end; 1612 call forward_order (); 1613 end; 1614 1615 else if order = "set_wakeup_table" 1616 then do; 1617 swt_infop = argptr; 1618 if swt_info.version ^= swt_info_version_1 1619 then go to wrong_version; 1620 if tcb.modes.wake_tbl 1621 then go to cant_do; 1622 1623 if wtcb.waketp = ""b /* no current wakeup table */ 1624 then string (swt_info.old_table) = ""b; 1625 else do; 1626 wakeup_tablep = ptr (ttybp, wtcb.waketp); 1627 old_waketab = wakeup_table; 1628 call untranslate_wakeup_table; 1629 swt_info.old_table = old_waketab; 1630 end; 1631 1632 new_waketab = swt_info.new_table; 1633 if string (new_waketab) = ""b /* new table is empty */ 1634 then do; 1635 if wtcb.waketp ^= ""b 1636 then do; 1637 call tty_space_man$free_space (size (new_waketab), ptr (ttybp, wtcb.waketp)); 1638 wtcb.waketp = ""b; 1639 end; 1640 end; 1641 else do; /* new table is not empty */ 1642 if wtcb.waketp = ""b 1643 then do; 1644 call tty_space_man$get_space (size (new_waketab), wakeup_tablep); 1645 if wakeup_tablep = null 1646 then go to no_allocate; 1647 wtcb.waketp = rel (wakeup_tablep); 1648 end; 1649 call translate_wakeup_table; 1650 wakeup_table = new_waketab; 1651 end; 1652 end; 1653 1654 else if order = "set_prompt" 1655 then do; 1656 sp_infop = argptr; 1657 if sp_info.version ^= sp_info_version_1 1658 then go to wrong_version; 1659 1660 i = length (sp_info.message); 1661 if i < 0 1662 then do; 1663 ercode = error_table_$smallarg; 1664 go to unlock; 1665 end; 1666 if i > 3 1667 then do; 1668 ercode = error_table_$bigarg; 1669 go to unlock; 1670 end; 1671 1672 wtcb.prompt_len = i; 1673 if i > 0 1674 then substr (wtcb.prompt, 1, i) = substr (sp_info.message, 1, i); 1675 end; 1676 1677 else if order = "set_required_access_class" 1678 then do; 1679 if wtcb.hproc ^= pds$processid 1680 then do; /* only owner can do this */ 1681 ercode = error_table_$io_no_permission; 1682 go to unlock; 1683 end; 1684 else call forward_order (); /* we don't handle this, but multiplexer might */ 1685 end; 1686 1687 else do; /* we didn't understand the order */ 1688 call channel_manager$control (devx, order, a_argptr, ercode); 1689 /* see if any muxes understand */ 1690 go to unlock; /* if not ercode will be returned */ 1691 end; 1692 1693 unlock: 1694 if ercode = error_table_$io_no_permission 1695 then state = 0; /* keep user in the dark */ 1696 call tty_lock$unlock_channel (devx); /* unlock the channel */ 1697 return; 1698 1699 error: 1700 ercode = error_table_$undefined_order_request; /* order not understood */ 1701 go to unlock; 1702 1703 cant_do: 1704 ercode = error_table_$action_not_performed; /* here if order couldn't be carried out */ 1705 go to unlock; 1706 1707 1708 no_allocate: 1709 ercode = error_table_$notalloc; 1710 go to unlock; 1711 1712 wrong_version: 1713 ercode = error_table_$unimplemented_version; 1714 go to unlock; 1715 1716 /* external entry to initialize a tcb */ 1717 1718 initialize_tcb: 1719 entry (a_wtcbp, a_tcbp); 1720 1721 1722 wtcbp = a_wtcbp; 1723 tcbp = a_tcbp; 1724 call init_tcb; 1725 return; 1726 1727 1728 1729 /* internal procedure to initialize a tcb */ 1730 1731 init_tcb: 1732 proc; 1733 1734 dcl save_breakall_enabled bit (1); /* used so this switch doesnt change */ 1735 1736 call init_tcb_tables; 1737 1738 tcb.terminal_type = ""; 1739 tcb.special_input_chars.erase = "#"; 1740 tcb.special_input_chars.kill = "@"; 1741 tcb.old_type = 0; 1742 string (tcb.modes) = ""b; 1743 save_breakall_enabled = tcb.breakall_enabled; /* dont let this be changed */ 1744 string (tcb.flags) = ""b; 1745 tcb.breakall_enabled = save_breakall_enabled; /* restore old value */ 1746 tcb.frame_begin, tcb.frame_end = NUL; 1747 tcb.actshift = "00"b; 1748 tcb.id = "none"; 1749 tcb.colmax = 50; 1750 tcb.linemax = 0; 1751 tcb.wrt_lchar = 0; 1752 tcb.max_output_block = 0; 1753 tcb.input_suspend_seq.count = 0; 1754 tcb.input_resume_seq.count = 0; 1755 tcb.output_suspend_etb_seq.count = 0; 1756 tcb.output_resume_ack_seq.count = 0; 1757 wtcb.tcb_initialized = "1"b; 1758 1759 return; 1760 1761 end init_tcb; 1762 1763 init_tcb_tables: 1764 proc; 1765 1766 trpp = addr (tcb.tables); /* set ptr to tablerp array */ 1767 dftrpp = addr (tcb.default_tables); /* set ptr to df_tablerp array */ 1768 do table_type = 1 to 6; /* dispose of tables from previous user */ 1769 if tablerp (table_type) ^= ""b 1770 then call tty_tables_mgr$delete (tablerp (table_type), 0); 1771 tablerp (table_type) = ""b; 1772 if df_tablerp (table_type) ^= (18)"1"b & df_tablerp (table_type) ^= ""b 1773 then call tty_tables_mgr$delete (df_tablerp (table_type), 0); 1774 df_tablerp (table_type) = (18)"1"b; 1775 end; 1776 return; 1777 1778 end init_tcb_tables; 1779 1780 /* internal procedure to add and replace tables */ 1781 /* replace_table entry is used by the table setting orders */ 1782 /* add_table entry is used by the set_terminal_data order */ 1783 1784 replace_table: 1785 proc (table_type, code); 1786 1787 dcl table_type fixed bin; /* table type number (Input) */ 1788 dcl code fixed bin (35); /* status code (Output) */ 1789 dcl infop ptr; /* ptr to info structure containing table (Input) */ 1790 dcl add_tablerp bit (18); /* offset of added table */ 1791 1792 dcl new_tablerp bit (18); 1793 dcl tablep ptr; 1794 dcl table_size fixed bin; 1795 dcl replace_sw bit (1) aligned; 1796 1797 1798 replace_sw = "1"b; 1799 if ^wtcb.flags.dialed 1800 then go to error; 1801 trpp = addr (tcb.tables); /* set ptr to tablerp array */ 1802 dftrpp = addr (tcb.default_tables); /* set ptr to df_tablerp array */ 1803 go to join; 1804 1805 1806 add_table: 1807 entry (table_type, infop, add_tablerp, code); 1808 1809 replace_sw = "0"b; 1810 argptr = infop; 1811 1812 join: 1813 if argptr = null /* no info structure supplied */ 1814 then tablep = null; /* assume null table */ 1815 else do; 1816 if table_type = delay_type & argptr -> delay_struc.version ^= DELAY_VERSION 1817 then do; 1818 wrong_version: 1819 code = error_table_$unimplemented_version; 1820 return; 1821 end; 1822 else if table_type = special_type 1823 & 1824 ^(argptr -> special_chars_struc.version = SPECIAL_VERSION 1825 | argptr -> special_chars_struc.version = SPECIAL_VERSION_2) 1826 then go to wrong_version; 1827 else if argptr -> cv_trans_struc.version > CV_TRANS_VERSION 1828 then go to wrong_version; 1829 1830 if replace_sw & argptr -> delay_struc.default ^= 0 1831 then do; /* must set current table to default table */ 1832 if df_tablerp (table_type) = (18)"1"b /* current table is already same as default */ 1833 then ; /* nothing to do */ 1834 else do; 1835 if tablerp (table_type) ^= ""b /* current table is allocated */ 1836 then call tty_tables_mgr$delete (tablerp (table_type), 0); 1837 /* delete it */ 1838 tablerp (table_type) = df_tablerp (table_type); 1839 /* change the current table */ 1840 df_tablerp (table_type) = (18)"1"b;/* indicate that default table is the same */ 1841 end; 1842 return; 1843 end; 1844 1845 tablep = addr (argptr -> delay_struc.delay); /* get ptr to new table */ 1846 end; 1847 1848 if tablep = null 1849 then new_tablerp = ""b; /* new table is null */ 1850 else do; /* allocate the new table */ 1851 if table_type = special_type 1852 then do; 1853 if argptr -> special_chars_struc.version = SPECIAL_VERSION_2 1854 then do; 1855 old_special_table_version = "0"b; 1856 sc_escape_len = tablep -> special_chars.escape_length; 1857 sc_input_escape_len = tablep -> special_chars.input_escapes.len; 1858 end; 1859 else do; 1860 old_special_table_version = "1"b; 1861 sc_escape_len = tablep -> special_chars_old.escape_length; 1862 sc_input_escape_len = tablep -> special_chars_old.input_escapes.len; 1863 end; 1864 1865 if sc_escape_len < 0 | sc_input_escape_len < 0 1866 then do; 1867 bad_data: 1868 code = error_table_$improper_data_format; 1869 return; 1870 end; 1871 1872 begin; 1873 1874 /* copy of special_chars structure. put here so begin block can allocate an 1875* area large enough to hold the new version ofthe data */ 1876 dcl 1 scs aligned, 1877 2 nl_seq aligned like c_chars, /* new-line sequence */ 1878 2 cr_seq aligned like c_chars, /* carriage-return sequence */ 1879 2 bs_seq aligned like c_chars, /* backspace sequence */ 1880 2 tab_seq aligned like c_chars, /* horizontal tab sequence */ 1881 2 vt_seq aligned like c_chars, /* vertical tab sequence */ 1882 2 ff_seq aligned like c_chars, /* form-feed sequence */ 1883 2 printer_on aligned like c_chars, /* printer-on sequence */ 1884 2 printer_off aligned like c_chars, /* printer_off sequence */ 1885 2 red_ribbon_shift aligned like c_chars, /* red ribbon shift sequence */ 1886 2 black_ribbon_shift aligned like c_chars, /* black ribbon shift sequence */ 1887 2 end_of_page aligned like c_chars, /* end-of-page warning sequence */ 1888 2 escape_length fixed bin, /* number of escape sequences */ 1889 2 not_edited_escapes (sc_escape_len) like c_chars, /* use in ^edited mode */ 1890 2 edited_escapes (sc_escape_len) like c_chars, /* use in edited mode */ 1891 2 input_escapes aligned, 1892 3 len fixed bin (8) unaligned, /* length of string */ 1893 3 str char (sc_input_escape_len) unaligned, /* escape sequence characters */ 1894 2 input_results aligned, 1895 3 pad bit (9) unaligned, /* so that strings will look the same */ 1896 3 str char (sc_input_escape_len) unaligned; /* results of escape sequences */ 1897 1898 table_size = size (scs); 1899 if table_size > max_special_size /* watch out for gluttons */ 1900 then do; 1901 code = error_table_$bigarg; 1902 return; 1903 end; 1904 if ^old_special_table_version 1905 then addr (scs) -> special_chars = tablep -> special_chars; 1906 else call copy_from_old_special_table (tablep, addr (scs)); 1907 tablep = addr (scs); 1908 call tty_tables_mgr$add (tablep, table_size, table_type, new_tablerp, code); 1909 end; 1910 end; 1911 else do; 1912 if table_type = delay_type 1913 then table_size = size (tablep -> delay); 1914 else table_size = divide (CV_TRANS_SIZE (argptr -> cv_trans_struc.version) + 1, 4, 17, 0); 1915 1916 call tty_tables_mgr$add (tablep, table_size, table_type, new_tablerp, code); 1917 end; 1918 if code ^= 0 1919 then return; 1920 1921 if table_type = special_type 1922 then do; /* don't trust user, restore saved refer values */ 1923 tablep = ptr (ttytp, new_tablerp); 1924 tablep -> special_chars.escape_length = sc_escape_len; 1925 tablep -> special_chars.input_escapes.len = sc_input_escape_len; 1926 end; 1927 else if table_type = delay_type 1928 then do; 1929 call validate_delay_table (ptr (ttytp, new_tablerp), code); 1930 if code ^= 0 1931 then do; 1932 call tty_tables_mgr$delete (new_tablerp, 0); 1933 return; 1934 end; 1935 end; 1936 end; 1937 1938 if ^replace_sw 1939 then add_tablerp = new_tablerp; 1940 else do; /* change the tcb table offsets */ 1941 if df_tablerp (table_type) = (18)"1"b /* default table is same as current */ 1942 then df_tablerp (table_type) = tablerp (table_type); 1943 /* set default table before changing current table */ 1944 else if tablerp (table_type) ^= ""b /* the current table is allocated */ 1945 then call tty_tables_mgr$delete (tablerp (table_type), 0); 1946 /* delete it */ 1947 tablerp (table_type) = new_tablerp; /* set the new current table */ 1948 end; 1949 return; 1950 1951 1952 end replace_table; 1953 1954 get_table: 1955 proc (tablerp); 1956 1957 /* internal procedure to copy contents of table currently in use for "get_" orders */ 1958 1959 dcl tablerp bit (18); 1960 dcl tablep ptr; 1961 1962 if ^wtcb.flags.dialed 1963 then go to error; 1964 1965 if tablerp = ""b /* we'll have to tell him about this */ 1966 then ercode = error_table_$no_table; 1967 1968 else do; 1969 tablep = ptr (ttytp, tablerp); 1970 if argptr -> cv_trans_struc.version > CV_TRANS_VERSION 1971 then ercode = error_table_$unimplemented_version; 1972 else if argptr -> cv_trans_struc.version = CV_TRANS_VERSION 1973 then argptr -> cv_trans_struc.cv_trans = tablep -> cv_trans; 1974 else do i = 0 to CV_TRANS_SIZE (argptr -> cv_trans_struc.version); 1975 argptr -> cv_trans_struc.cv_trans.value (i) = tablep -> cv_trans.value (i); 1976 end; 1977 end; 1978 return; 1979 1980 end /* get_table */; 1981 1982 alter_mode: 1983 proc (mode_name, alter_sw); 1984 1985 dcl mode_name char (*); 1986 dcl alter_sw bit (1); 1987 1988 dcl 1 modes_info aligned, 1989 2 len fixed bin, 1990 2 str char (20); 1991 1992 1993 if alter_sw 1994 then do; 1995 modes_info.str = mode_name; 1996 modes_info.len = length (mode_name); 1997 end; 1998 else do; 1999 modes_info.str = "^" || mode_name; 2000 modes_info.len = length (mode_name) + 1; 2001 end; 2002 2003 call tty_modes$mpx_only (wtcbp, addr (modes_info), ercode); 2004 2005 return; 2006 2007 end; 2008 2009 2010 2011 forward_order: 2012 proc; /* forwards a control order to the multiplexer */ 2013 2014 call channel_manager$control (devx, order, argptr, ercode); 2015 if ercode ^= 0 /* give up */ 2016 then go to unlock; 2017 2018 end; 2019 2020 /* internal proc to validate a delay table */ 2021 2022 validate_delay_table: 2023 proc (dp, code); 2024 2025 dcl dp ptr; 2026 dcl code fixed bin (35); 2027 2028 if max (abs (dp -> delay.vert_nl), dp -> delay.const_tab, abs (dp -> delay.backspace)) <= 127 2029 then if dp -> delay.vt_ff <= 511 2030 then if min (dp -> delay.const_tab, dp -> delay.vt_ff) >= 0 2031 then if max (dp -> delay.horz_nl, dp -> delay.var_tab) <= 1 2032 then if min (dp -> delay.horz_nl, dp -> delay.var_tab) >= 0 2033 then do; 2034 code = 0; 2035 return; 2036 end; 2037 code = error_table_$invalid_delay_value; 2038 2039 return; 2040 2041 end validate_delay_table; 2042 2043 2044 /* entry to send delay table (called by tty_modes) */ 2045 2046 send_delays: 2047 entry (a_wtcbp); 2048 2049 wtcbp = a_wtcbp; 2050 tcbp = wtcb.tcb_ptr; 2051 devx = wtcb.devx; 2052 ttytp = addr (tty_tables$); 2053 call send_delay_table; 2054 return; 2055 2056 2057 /* internal proc to send delay tables for the channel to the fnp */ 2058 2059 send_delay_table: 2060 proc; 2061 2062 dcl code fixed bin (35); 2063 2064 2065 dcl fnp_delays (6) fixed bin (17) unal; 2066 dcl dp ptr; 2067 2068 if tcb.delayrp = ""b /* no delay table for this channel */ 2069 then fnp_delays (*) = 0; /* use default delays, i.e., all zero */ 2070 else do; /* fill in fnp delays from current delay table */ 2071 dp = ptr (ttytp, tcb.delayrp); /* get ptr to delay table */ 2072 fnp_delays (1) = abs (dp -> delay.vert_nl); 2073 fnp_delays (2) = fixed (dp -> delay.horz_nl * 512, 17); 2074 fnp_delays (3) = dp -> delay.const_tab; 2075 fnp_delays (4) = fixed (dp -> delay.var_tab * 512, 17); 2076 fnp_delays (5) = abs (dp -> delay.backspace); 2077 fnp_delays (6) = min (dp -> delay.vt_ff, 127); 2078 end; 2079 2080 call channel_manager$control (devx, "set_delay", addr (fnp_delays), code); 2081 2082 end send_delay_table; 2083 2084 /* entry to turn printer on or off (called by tty_modes) */ 2085 2086 printer_on_off: 2087 entry (a_wtcbp, a_sw); 2088 2089 wtcbp = a_wtcbp; 2090 tcbp = wtcb.tcb_ptr; 2091 devx = wtcb.devx; 2092 ttytp = addr (tty_tables$); 2093 if a_sw 2094 then call turn_printer_on (0); 2095 else call turn_printer_off (0); 2096 return; 2097 2098 2099 /* internal proc to write printer_off sequence to terminal */ 2100 2101 turn_printer_off: 2102 proc (code); 2103 2104 dcl code fixed bin (35); 2105 2106 if tcb.no_printer_off 2107 then do; 2108 no_print_off: 2109 code = error_table_$action_not_performed; 2110 return; 2111 end; 2112 2113 call channel_manager$control (devx, "printer_off", null, code); 2114 if code = 0 2115 then return; 2116 if code ^= error_table_$undefined_order_request 2117 then return; 2118 code = 0; 2119 2120 if tcb.specialrp = ""b 2121 then go to no_print_off; 2122 special_ptr = ptr (ttytp, tcb.specialrp); /* get pointer to special chars table */ 2123 if special_ptr -> special_chars.printer_off.count = 0 2124 then go to no_print_off; /* none, complain */ 2125 rawom = tcb.modes.rawom; /* save setting of rawom */ 2126 tcb.modes.rawom = "1"b; /* we shd be in rawo to do this */ 2127 2128 call tty_write$locked (devx, addr (special_ptr -> special_chars.printer_off.chars), 0, 2129 (special_ptr -> special_chars.printer_off.count), i, (0), code); 2130 tcb.modes.rawom = rawom; /* restore rawom setting */ 2131 2132 return; 2133 2134 end turn_printer_off; 2135 2136 2137 2138 2139 /* internal proc to write printer_on sequence to terminal */ 2140 2141 turn_printer_on: 2142 proc (code); 2143 2144 dcl code fixed bin (35); 2145 2146 if tcb.no_printer_off 2147 then do; 2148 no_print_on: 2149 code = error_table_$action_not_performed; 2150 return; 2151 end; 2152 2153 call channel_manager$control (devx, "printer_on", null, code); 2154 if code = 0 2155 then return; 2156 if code ^= error_table_$undefined_order_request 2157 then return; 2158 code = 0; 2159 2160 if tcb.specialrp = ""b 2161 then go to no_print_on; 2162 2163 special_ptr = ptr (ttytp, tcb.specialrp); /* get pointer to special chars table */ 2164 if special_ptr -> special_chars.printer_on.count = 0 2165 then go to no_print_on; /* none, complain */ 2166 rawom = tcb.modes.rawom; /* save setting of rawom */ 2167 tcb.modes.rawom = "1"b; /* we shd be in rawo to do this */ 2168 2169 call tty_write$locked (devx, addr (special_ptr -> special_chars.printer_on.chars), 0, 2170 (special_ptr -> special_chars.printer_on.count), i, (0), code); 2171 tcb.modes.rawom = rawom; /* reset rawom */ 2172 2173 return; 2174 2175 end turn_printer_on; 2176 2177 setup: 2178 proc (state); 2179 2180 dcl state fixed bin; 2181 devx = twx; /* pull devx from user */ 2182 ttybp = addr (tty_buf$); 2183 lctp = tty_buf.lct_ptr; 2184 if devx < 1 | devx > lct.max_no_lctes 2185 then do; 2186 ercode = error_table_$invalid_device; 2187 go to ret; /* return error */ 2188 end; 2189 2190 call tty_lock$lock_channel (devx, ercode); /* lock the channel */ 2191 if ercode ^= 0 2192 then go to ret; 2193 locked = "1"b; 2194 2195 lctep = addr (lct.lcte_array (devx)); 2196 if lcte.channel_type ^= 0 /* not our cup of tea */ 2197 then go to illdet; 2198 2199 wtcbp = lcte.data_base_ptr; /* pointer to perm info */ 2200 tcbp = wtcb.tcb_ptr; /* pickup pointer to tib */ 2201 if ^wtcb.tcb_initialized 2202 then call init_tcb; 2203 2204 if wtcb.dialed /* compute state */ 2205 then state = DIALED_UP; /* dialed up */ 2206 else if wtcb.masked /* masked by FNP */ 2207 then state = MASKED_STATE; 2208 else if wtcb.listen 2209 then state = LISTENING; /* hungup but listening */ 2210 else state = IGNORE; /* made busy */ 2211 2212 ercode = 0; /* clear error code */ 2213 2214 if wtcb.hproc = pds$processid /* check access */ 2215 then return; /* hproc is always welcome */ 2216 2217 if wtcb.hproc = "0"b /* if no one */ 2218 then return; /* then ok */ 2219 2220 2221 if (wtcb.uproc = pds$processid & (tcb.uproc_attached | ^uproc_attach_required_for_setup)) 2222 | ^uproc_required_for_setup /* if using process */ 2223 then return; 2224 2225 go to illdet; /* return to main line at error point */ 2226 end; 2227 2228 illdet: /* illegal messing with channel */ 2229 ercode = error_table_$io_no_permission; /* else return error */ 2230 call tty_lock$unlock_channel (devx); /* unlock the channel */ 2231 2232 ret: 2233 if ercode ^= 0 2234 then state = 0; /* keep clean */ 2235 return; 2236 2237 get_devx: 2238 proc (chan_name); 2239 2240 dcl chan_name char (*); 2241 2242 lcntp = lct.lcnt_ptr; /* get pointer to the name table */ 2243 do devx = 1 to lct.max_no_lctes while (lcnt.names (devx) ^= chan_name); 2244 end; 2245 if devx > lct.max_no_lctes 2246 then /* not in name table, maybe it's old name? */ 2247 do devx = 1 to lct.max_no_lctes while (^compare_tty_name_ (chan_name, lcnt.names (devx))); 2248 end; 2249 2250 if devx > lct.max_no_lctes /* wasn't in that form either */ 2251 then ercode = error_table_$invalid_device; /* leave error code */ 2252 else ercode = 0; 2253 return; /* return to caller */ 2254 2255 end; 2256 2257 2258 cleaner: 2259 proc; 2260 2261 if locked 2262 then call tty_lock$unlock_channel (devx); 2263 2264 end cleaner; 2265 2266 /* Subroutine to translate wakeup table from ASCII to terminal code */ 2267 2268 translate_wakeup_table: 2269 proc; 2270 2271 dcl 1 temp_table aligned like wakeup_table; 2272 dcl (i, j) fixed bin; 2273 dcl p ptr; 2274 2275 if tcb.input_mvtrp = ""b 2276 then return; 2277 string (temp_table) = ""b; 2278 p = ptr (ttytp, tcb.input_mvtrp); /* get ptr to input translation table */ 2279 do i = 0 to 127; 2280 if new_waketab.wake_map (i) /* this is a wakeup char */ 2281 then do j = 0 to 127; /* find all terminal codes that translate into it */ 2282 if p -> cv_trans.value (j) = i /* found one */ 2283 then temp_table.wake_map (j) = "1"b; 2284 end; 2285 end; 2286 2287 new_waketab = temp_table; 2288 end; 2289 2290 2291 2292 /* Subroutine to translate wakeup table from terminal code to ASCII */ 2293 2294 untranslate_wakeup_table: 2295 proc; 2296 2297 dcl 1 temp_table aligned like wakeup_table; 2298 dcl i fixed bin; 2299 dcl p ptr; 2300 2301 if tcb.input_mvtrp = ""b 2302 then return; 2303 string (temp_table) = ""b; 2304 p = ptr (ttytp, tcb.input_mvtrp); 2305 do i = 0 to 127; 2306 if old_waketab.wake_map (i) /* this is a wakeup char */ 2307 then do; 2308 j = p -> cv_trans.value (i); /* get ASCII value */ 2309 if j <= 127 /* don't trust table */ 2310 then temp_table.wake_map (j) = "1"b; 2311 end; 2312 end; 2313 2314 old_waketab = temp_table; 2315 end; 2316 2317 2318 is_parent_mpx: /* Check match of channel's parent mpx type against input mpx type */ 2319 proc (parent_mpx_type) returns (bit (1)); 2320 2321 dcl parent_mpx_type fixed bin; 2322 dcl temp_lctep ptr; 2323 2324 if lcte.major_channel_devx ^= 0 2325 then do; 2326 temp_lctep = addr (lct.lcte_array (lcte.major_channel_devx)); 2327 if temp_lctep -> lcte.channel_type = parent_mpx_type 2328 then return ("1"b); 2329 end; 2330 else if lcte.channel_type = parent_mpx_type 2331 then return ("1"b); 2332 return ("0"b); 2333 end is_parent_mpx; 2334 2335 copy_to_old_special_table: 2336 proc; 2337 2338 /* Special procedure to copy a Version 2 special chars table (15 char 2339* sequences) to a Version 1 special chars table (3 char sequences). It is 2340* broken out as a subroutine just to avoid cluttering up where it is called. */ 2341 2342 special_chars_old_ptr = addr (temp_ptr -> special_chars_struc_old.special_chars); 2343 2344 if special_ptr -> special_chars.nl_seq.count > 3 2345 then do; 2346 bad_special_size: 2347 ercode = error_table_$invalid_array_size; 2348 return; 2349 end; 2350 addr (special_chars_old.nl_seq) -> c_chars_old = addr (special_ptr -> special_chars.nl_seq) -> c_chars_old; 2351 2352 if special_ptr -> special_chars.cr_seq.count > 3 2353 then go to bad_special_size; 2354 addr (special_chars_old.cr_seq) -> c_chars_old = addr (special_ptr -> special_chars.cr_seq) -> c_chars_old; 2355 2356 if special_ptr -> special_chars.bs_seq.count > 3 2357 then go to bad_special_size; 2358 addr (special_chars_old.bs_seq) -> c_chars_old = addr (special_ptr -> special_chars.bs_seq) -> c_chars_old; 2359 2360 if special_ptr -> special_chars.tab_seq.count > 3 2361 then go to bad_special_size; 2362 addr (special_chars_old.tab_seq) -> c_chars_old = addr (special_ptr -> special_chars.tab_seq) -> c_chars_old; 2363 2364 if special_ptr -> special_chars.vt_seq.count > 3 2365 then go to bad_special_size; 2366 addr (special_chars_old.vt_seq) -> c_chars_old = addr (special_ptr -> special_chars.vt_seq) -> c_chars_old; 2367 2368 if special_ptr -> special_chars.ff_seq.count > 3 2369 then go to bad_special_size; 2370 addr (special_chars_old.ff_seq) -> c_chars_old = addr (special_ptr -> special_chars.ff_seq) -> c_chars_old; 2371 2372 if special_ptr -> special_chars.printer_on.count > 3 2373 then go to bad_special_size; 2374 addr (special_chars_old.printer_on) -> c_chars_old = 2375 addr (special_ptr -> special_chars.printer_on) -> c_chars_old; 2376 2377 if special_ptr -> special_chars.printer_off.count > 3 2378 then go to bad_special_size; 2379 addr (special_chars_old.printer_off) -> c_chars_old = 2380 addr (special_ptr -> special_chars.printer_off) -> c_chars_old; 2381 2382 if special_ptr -> special_chars.red_ribbon_shift.count > 3 2383 then go to bad_special_size; 2384 addr (special_chars_old.red_ribbon_shift) -> c_chars_old = 2385 addr (special_ptr -> special_chars.red_ribbon_shift) -> c_chars_old; 2386 2387 if special_ptr -> special_chars.black_ribbon_shift.count > 3 2388 then go to bad_special_size; 2389 addr (special_chars_old.black_ribbon_shift) -> c_chars_old = 2390 addr (special_ptr -> special_chars.black_ribbon_shift) -> c_chars_old; 2391 2392 if special_ptr -> special_chars.end_of_page.count > 3 2393 then go to bad_special_size; 2394 addr (special_chars_old.end_of_page) -> c_chars_old = 2395 addr (special_ptr -> special_chars.end_of_page) -> c_chars_old; 2396 2397 special_chars_old.escape_length = special_ptr -> special_chars.escape_length; 2398 2399 do i = 1 to special_ptr -> special_chars.escape_length; 2400 if special_ptr -> special_chars.not_edited_escapes (i).count > 3 2401 | special_ptr -> special_chars.edited_escapes (i).count > 3 2402 then go to bad_special_size; 2403 addr (special_chars_old.not_edited_escapes (i)) -> c_chars_old = 2404 addr (special_ptr -> special_chars.not_edited_escapes (i)) -> c_chars_old; 2405 2406 addr (special_chars_old.edited_escapes (i)) -> c_chars_old = 2407 addr (special_ptr -> special_chars.edited_escapes (i)) -> c_chars_old; 2408 end; 2409 2410 special_chars_old.input_escapes.len = special_ptr -> special_chars.input_escapes.len; 2411 special_chars_old.input_escapes.str = special_ptr -> special_chars.input_escapes.str; 2412 2413 special_chars_old.input_results.pad = special_ptr -> special_chars.input_results.pad; 2414 special_chars_old.input_results.str = special_ptr -> special_chars.input_results.str; 2415 2416 end copy_to_old_special_table; 2417 2418 copy_from_old_special_table: 2419 proc (source_ptr, target_ptr); 2420 2421 /* Special procedure to copy a Version 1 special chars table (3 char sequences 2422* into a Version 2 special chars table (15 char sequences). It is put here 2423* just to keep from cluttering up where it is called. */ 2424 2425 dcl target_ptr ptr; 2426 dcl source_ptr ptr; 2427 2428 special_chars_old_ptr = source_ptr; 2429 addr (target_ptr -> special_chars.nl_seq) -> c_chars_old = addr (special_chars_old.nl_seq) -> c_chars_old; 2430 2431 addr (target_ptr -> special_chars.cr_seq) -> c_chars_old = addr (special_chars_old.cr_seq) -> c_chars_old; 2432 2433 addr (target_ptr -> special_chars.bs_seq) -> c_chars_old = addr (special_chars_old.bs_seq) -> c_chars_old; 2434 2435 addr (target_ptr -> special_chars.tab_seq) -> c_chars_old = addr (special_chars_old.tab_seq) -> c_chars_old; 2436 2437 addr (target_ptr -> special_chars.vt_seq) -> c_chars_old = addr (special_chars_old.vt_seq) -> c_chars_old; 2438 2439 addr (target_ptr -> special_chars.ff_seq) -> c_chars_old = addr (special_chars_old.ff_seq) -> c_chars_old; 2440 2441 addr (target_ptr -> special_chars.printer_on) -> c_chars_old = 2442 addr (special_chars_old.printer_on) -> c_chars_old; 2443 2444 addr (target_ptr -> special_chars.printer_off) -> c_chars_old = 2445 addr (special_chars_old.printer_off) -> c_chars_old; 2446 2447 addr (target_ptr -> special_chars.red_ribbon_shift) -> c_chars_old = 2448 addr (special_chars_old.red_ribbon_shift) -> c_chars_old; 2449 2450 addr (target_ptr -> special_chars.black_ribbon_shift) -> c_chars_old = 2451 addr (special_chars_old.black_ribbon_shift) -> c_chars_old; 2452 2453 addr (target_ptr -> special_chars.end_of_page) -> c_chars_old = 2454 addr (special_chars_old.end_of_page) -> c_chars_old; 2455 2456 target_ptr -> special_chars.escape_length = special_chars_old.escape_length; 2457 2458 do i = 1 to special_chars_old.escape_length; 2459 addr (target_ptr -> special_chars.not_edited_escapes (i)) -> c_chars_old = 2460 addr (special_chars_old.not_edited_escapes (i)) -> c_chars_old; 2461 addr (target_ptr -> special_chars.edited_escapes (i)) -> c_chars_old = 2462 addr (special_chars_old.edited_escapes (i)) -> c_chars_old; 2463 end; 2464 2465 target_ptr -> special_chars.input_escapes.len = special_chars_old.input_escapes.len; 2466 target_ptr -> special_chars.input_escapes.str = special_chars_old.input_escapes.str; 2467 2468 target_ptr -> special_chars.input_results.pad = special_chars_old.input_results.pad; 2469 target_ptr -> special_chars.input_results.str = special_chars_old.input_results.str; 2470 2471 end copy_from_old_special_table; 2472 2473 /* format: off */ 2474 /* BEGIN INCLUDE FILE aim_template.incl.pl1 */ 1 2 1 3 /* Created 740723 by PG */ 1 4 /* Modified 06/28/78 by C. D. Tavares to add rcp privilege */ 1 5 /* Modified 83-05-10 by E. N. Kitltitz to add communications privilege */ 1 6 1 7 /* This structure defines the components of both an access 1 8* class and an access authorization as interpreted by the 1 9* Access Isolation Mechanism. */ 1 10 1 11 1 12 dcl 1 aim_template aligned based, /* authorization/access class template */ 1 13 2 categories bit (36), /* access categories */ 1 14 2 level fixed bin (17) unaligned, /* sensitivity level */ 1 15 2 privileges unaligned, /* special access privileges (in authorization only) */ 1 16 (3 ipc, /* interprocess communication privilege */ 1 17 3 dir, /* directory privilege */ 1 18 3 seg, /* segment privilege */ 1 19 3 soos, /* security out-of-service privilege */ 1 20 3 ring1, /* ring 1 access privilege */ 1 21 3 rcp, /* RCP resource access privilege */ 1 22 3 comm) bit (1), /* communications cross-AIM privilege */ 1 23 3 pad bit (11); 1 24 1 25 1 26 /* END INCLUDE FILE aim_template.incl.pl1 */ 2474 2475 /* BEGIN INCLUDE FILE ... tty_convert.incl.pl1 */ 2 2 2 3 /* tty_ conversion tables */ 2 4 /* Created 11/3/75 by Robert S. Coren */ 2 5 /* Info structures added 5/19/77 by Robert S. Coren */ 2 6 /* Length of cv_trans changed from 128 to 256 05/03/78 by Robert Coren */ 2 7 /* conversion table mnemonics added JRDavis 21 Aug 80 */ 2 8 /* fix special_chars_struc to have good refers Fri 13 Feb 81 JRDavis */ 2 9 2 10 2 11 /****^ HISTORY COMMENTS: 2 12* 1) change(85-12-01,Negaret), approve(87-07-23,MCR7742), 2 13* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1056): 2 14* Added INPUT_CONVERT_DSA_CR_PROCESSING constant. 2 15* 2) change(88-01-22,Brunelle), approve(88-01-22,MCR7813), 2 16* audit(88-10-05,Blair), install(88-10-17,MR12.2-1171): 2 17* Expand c_chars definition from 3 chars to 15. Change SPECIAL_VERSION 2 18* from 1 to 2. Add version variable to get_special_info_struc and define 2 19* SPECIAL_INFO_STRUCT_VERSION_1. 2 20* END HISTORY COMMENTS */ 2 21 2 22 2 23 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 2 24 2 25 2 26 dcl 1 special_chars aligned based, /* table of special character sequences */ 2 27 2 nl_seq aligned like c_chars, /* new-line sequence */ 2 28 2 cr_seq aligned like c_chars, /* carriage-return sequence */ 2 29 2 bs_seq aligned like c_chars, /* backspace sequence */ 2 30 2 tab_seq aligned like c_chars, /* horizontal tab sequence */ 2 31 2 vt_seq aligned like c_chars, /* vertical tab sequence */ 2 32 2 ff_seq aligned like c_chars, /* form-feed sequence */ 2 33 2 printer_on aligned like c_chars, /* printer-on sequence */ 2 34 2 printer_off aligned like c_chars, /* printer_off sequence */ 2 35 2 red_ribbon_shift aligned like c_chars, /* red ribbon shift sequence */ 2 36 2 black_ribbon_shift aligned like c_chars, /* black ribbon shift sequence */ 2 37 2 end_of_page aligned like c_chars, /* end-of-page warning sequence */ 2 38 2 escape_length fixed bin, /* number of escape sequences */ 2 39 2 not_edited_escapes (sc_escape_len refer (special_chars.escape_length)) like c_chars, 2 40 /* use in ^edited mode */ 2 41 2 edited_escapes (sc_escape_len refer (special_chars.escape_length)) like c_chars, 2 42 /* use in edited mode */ 2 43 2 input_escapes aligned, 2 44 3 len fixed bin (8) unaligned, /* length of string */ 2 45 3 str char (sc_input_escape_len refer (special_chars.input_escapes.len)) unaligned, 2 46 /* escape sequence characters */ 2 47 2 input_results aligned, 2 48 3 pad bit (9) unaligned, /* so that strings will look the same */ 2 49 3 str char (sc_input_escape_len refer (special_chars.input_escapes.len)) unaligned; 2 50 /* results of escape sequences */ 2 51 2 52 2 53 dcl c_chars_ptr ptr; 2 54 dcl 1 c_chars based (c_chars_ptr) aligned, 2 55 2 count fixed bin (8) unaligned, 2 56 2 chars (15) char (1) unaligned; 2 57 2 58 dcl sc_escape_len fixed bin; /* count of output escapes to allocate in special_chars */ 2 59 dcl sc_input_escape_len fixed bin; /* count of input escapes to allocate in special_chars */ 2 60 2 61 2 62 dcl 1 cv_trans based aligned, /* conversion/translation table format */ 2 63 2 value (0:255) fixed bin (8) unal; 2 64 2 65 2 66 dcl 1 delay based aligned, /* delay counts for output */ 2 67 2 vert_nl fixed bin, 2 68 2 horz_nl float bin, 2 69 2 const_tab fixed bin, 2 70 2 var_tab float bin, 2 71 2 backspace fixed bin, 2 72 2 vt_ff fixed bin; 2 73 2 74 /* info structures used with orders */ 2 75 2 76 dcl 1 special_chars_struc aligned based, 2 77 2 version fixed bin, 2 78 2 default fixed bin, /* non-zero indicates use default */ 2 79 2 special_chars, /* same as level-1 above */ 2 80 /* has to be spelled out instead of using like */ 2 81 /* because of refer options */ 2 82 3 nl_seq aligned like c_chars, /* new-line sequence */ 2 83 3 cr_seq aligned like c_chars, /* carriage-return sequence */ 2 84 3 bs_seq aligned like c_chars, /* backspace sequence */ 2 85 3 tab_seq aligned like c_chars, /* horizontal tab sequence */ 2 86 3 vt_seq aligned like c_chars, /* vertical tab sequence */ 2 87 3 ff_seq aligned like c_chars, /* form-feed sequence */ 2 88 3 printer_on aligned like c_chars, /* printer-on sequence */ 2 89 3 printer_off aligned like c_chars, /* printer_off sequence */ 2 90 3 red_ribbon_shift aligned like c_chars, /* red ribbon shift sequence */ 2 91 3 black_ribbon_shift aligned like c_chars, /* black ribbon shift sequence */ 2 92 3 end_of_page aligned like c_chars, /* end-of-page warning sequence */ 2 93 3 escape_length fixed bin, /* number of escape sequences */ 2 94 3 not_edited_escapes (sc_escape_len refer (special_chars_struc.escape_length)) like c_chars, 2 95 /* use in ^edited mode */ 2 96 3 edited_escapes (sc_escape_len refer (special_chars_struc.escape_length)) like c_chars, 2 97 /* use in edited mode */ 2 98 3 input_escapes aligned, 2 99 4 len fixed bin (8) unaligned, /* length of string */ 2 100 4 str char (sc_input_escape_len refer (special_chars_struc.input_escapes.len)) unaligned, 2 101 /* escape sequence characters */ 2 102 3 input_results aligned, 2 103 4 pad bit (9) unaligned, /* so that strings will look the same */ 2 104 4 str char (sc_input_escape_len refer (special_chars_struc.input_escapes.len)) unaligned; 2 105 /* results of escape sequences */ 2 106 2 107 dcl 1 cv_trans_struc aligned based, /* all conversion/translation tables */ 2 108 2 version fixed bin, 2 109 2 default fixed bin, /* as above */ 2 110 2 cv_trans like cv_trans; 2 111 2 112 dcl 1 delay_struc aligned based, 2 113 2 version fixed bin, 2 114 2 default fixed bin, /* as above */ 2 115 2 delay like delay; 2 116 2 117 dcl 1 get_special_info_struc based aligned, /* get_special order */ 2 118 2 version char (8), 2 119 2 area_ptr pointer, 2 120 2 table_ptr pointer; 2 121 2 122 dcl SPECIAL_INFO_STRUCT_VERSION_1 2 123 char (8) int static options (constant) init ("sisv1000"); 2 124 dcl SPECIAL_VERSION fixed bin int static options (constant) init (1); 2 125 dcl SPECIAL_VERSION_2 fixed bin int static options (constant) init (2); 2 126 dcl DELAY_VERSION fixed bin int static options (constant) init (1); 2 127 dcl CV_TRANS_VERSION fixed bin int static options (constant) init (2); 2 128 2 129 dcl CV_TRANS_SIZE (2) fixed bin int static options (constant) init (127, 255); 2 130 /* indexed by version number */ 2 131 2 132 2 133 /* values for input and output conversion tables */ 2 134 2 135 dcl ( 2 136 INPUT_CONVERT_ORDINARY init (0), 2 137 INPUT_CONVERT_BREAK init (1), 2 138 INPUT_CONVERT_ESCAPE init (2), 2 139 INPUT_CONVERT_DISCARD init (3), 2 140 INPUT_CONVERT_FORMFEED init (4), 2 141 INPUT_CONVERT_PRECEDENCE_DISCARD 2 142 init (5), 2 143 INPUT_CONVERT_DSA_CR_PROCESSING 2 144 init (6) 2 145 ) fixed bin (8) unaligned internal static options (constant); 2 146 2 147 dcl ( 2 148 OUTPUT_CONVERT_ORDINARY init (0), 2 149 OUTPUT_CONVERT_NEWLINE init (1), 2 150 OUTPUT_CONVERT_CR init (2), 2 151 OUTPUT_CONVERT_HT init (3), 2 152 OUTPUT_CONVERT_BS init (4), 2 153 OUTPUT_CONVERT_VT init (5), 2 154 OUTPUT_CONVERT_FF init (6), 2 155 OUTPUT_CONVERT_OCTAL init (7), 2 156 OUTPUT_CONVERT_RRS init (8), 2 157 OUTPUT_CONVERT_BRS init (9), 2 158 OUTPUT_CONVERT_NO_MOTION init (10), 2 159 OUTPUT_CONVERT_PRECEDENCE_NO_MOTION 2 160 init (11), 2 161 OUTPUT_CONVERT_DONT_SEND init (12), 2 162 OUTPUT_CONVERT_NOT_USED_13 2 163 init (13), 2 164 OUTPUT_CONVERT_NOT_USED_14 2 165 init (14), 2 166 OUTPUT_CONVERT_NOT_USED_15 2 167 init (15), 2 168 OUTPUT_CONVERT_NOT_USED_16 2 169 init (16), 2 170 OUTPUT_CONVERT_FIRST_SPECIAL 2 171 init (17) 2 172 ) fixed bin (8) unaligned internal static options (constant); 2 173 2 174 /* END INCLUDE FILE ... tty_convert.incl.pl1 */ 2475 2476 /* BEGIN INCLUDE FILE ... tty_buf.incl.pl1 */ 3 2 3 3 /* Date Last Modified and Reason 3 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 3 5* Modified January 1978 by Robert Coren and Larry Johnson for variable-size buffers 3 6* Modified 2/6/78 by Robert Coren to make circular_queue size settable 3 7* Modified Aug 78 by J. Nicholls to move the buffer block format to a file of its own 3 8* and wtcb to its own plus other modification for ring 0 multiplexing, tty_buffer_block.incl.pl1 3 9* Modified 7/17/79 by B. Greenberg for echo negotiation meters. 3 10* Modified November 1979 by C. Hornig for MCS tracing. 3 11* Modified December 1979 by Robert Coren to add FNP channel lock meter 3 12* Modified February 1980 by Robert Coren to remove all references to circular buffer 3 13* Modified March 1980 by Robert Coren to reorganize metering information 3 14* Modified December 1980 by Robert Coren to add FNP-specific events 3 15* Modified 24 March 1982, W. Olin Sibert, to add mcs_timer support, recoverable_error_severity 3 16* Modified November 1984 by Robert Coren to add tty_area_lock 3 17**/ 3 18 3 19 dcl ttybp ptr, 3 20 tty_buf$ ext static, /* tty buffer segment */ 3 21 tty_ev fixed bin int static options (constant) init (57), /* event used for wait and notify */ 3 22 abs_buf_limit fixed bin (18) static options (constant) init (64), /* minimum number of words we will leave free */ 3 23 input_bpart fixed bin (18) static options (constant) init (2), /* fraction of bleft we will allow for input */ 3 24 output_bpart fixed bin (18) static options (constant) init (4); /* fraction of bleft we will allow for output */ 3 25 3 26 3 27 dcl qblock_size fixed bin int static options (constant) init (16); /* size in words of a delay queue block */ 3 28 dcl bsizec fixed bin int static options (constant) init (60); /* number of characters in smallest buffer */ 3 29 dcl buf_per_second fixed bin int static options (constant) init (10); /* for figuring out max. buffer size based on speed */ 3 30 3 31 dcl FNP_DUMP_PATCH_EVENT fixed bin int static options (constant) init (58); 3 32 dcl FNP_METER_EVENT fixed bin int static options (constant) init (59); 3 33 dcl TTY_AREA_LOCK_EVENT bit (36) aligned int static options (constant) init ("74"b3); 3 34 3 35 dcl 1 tty_buf aligned based (ttybp), /* declaration of tty buffer seg */ 3 36 2 slock bit (36), /* per system lock */ 3 37 2 absorig fixed bin (24), /* abs address of this seg */ 3 38 2 borig bit (18), /* index of start of buffer area */ 3 39 2 bleft fixed bin (18), /* words left in pool */ 3 40 2 free bit (18), /* pointer to start of free pool */ 3 41 2 fnp_config_flags (8) bit (1) unal, /* flag(i) ON if fnp(i) configured */ 3 42 2 padb1 bit (28) unaligned, 3 43 2 lct_ptr ptr, /* pointer to logical channel table */ 3 44 3 45 2 nrawread fixed bin (35), /* number of raw chars input, total */ 3 46 2 nrawwrite fixed bin (35), /* number of raw characters output */ 3 47 2 ninchars fixed bin (35), /* total input chars after conversion */ 3 48 2 noutchars fixed bin (35), /* total output chars before conversion */ 3 49 2 readblocked fixed bin (35), /* number of times go input blocked */ 3 50 2 nblocked fixed bin (35), /* number of times process output blocked */ 3 51 2 minbuf fixed bin (18), /* min output buffer size */ 3 52 2 totbuf fixed bin (35), /* divide by nblocked to get ave buffer size */ 3 53 3 54 2 preconverted fixed bin (35), /* number of converted chars held in tty_buf */ 3 55 2 input_restart fixed bin, /* number of times tty_read had to start over */ 3 56 2 output_restart fixed bin, /* number of times tty_write has had to start over */ 3 57 2 output_buffer_overflow fixed bin, /* number of times tty_write has run out of buffers */ 3 58 2 read_time fixed bin (71), /* total time spent in tty_read */ 3 59 2 write_time fixed bin (71), /* total time spent in tty_write */ 3 60 3 61 2 read_calls fixed bin (35), /* number of calls to tty_read */ 3 62 2 write_calls fixed bin (35), /* number of calls to tty_write */ 3 63 2 bfx fixed bin, /* used in calls to iobm */ 3 64 2 nquits fixed bin (35), /* number of quits */ 3 65 2 space_needed_data, 3 66 3 space_needed bit (1) unal, /* space_needed bit on in at least 1 lcte */ 3 67 3 space_needed_calls fixed bin (34) unal, /* meter of uses of this facility */ 3 68 2 space_lock_count fixed bin (35), /* count of times tty_buf.slock locked */ 3 69 2 space_lock_wait_count fixed bin (35), /* count of times necessary to loop to lock it */ 3 70 2 space_lock_wait_time fixed bin (35), /* total time looped trying to lock it */ 3 71 3 72 2 alloc_calls fixed bin (35), /* total number of allocations performed in tty_buf */ 3 73 2 free_calls fixed bin (35), /* total number of freeings in tty_buf */ 3 74 2 alloc_time fixed bin (35), /* time spent masked in tty_space_man$get entries */ 3 75 2 free_time fixed bin (35), /* time spent masked in tty_space_man$free entries */ 3 76 2 total_alloc_steps fixed bin (35), /* number of steps thru free chain while doing above */ 3 77 2 alloc_failures fixed bin (35), /* number of unsuccessful attempts to allocate space */ 3 78 2 cumulative_input_space fixed bin (71), /* cumulative amount of space allocated for input */ 3 79 3 80 2 cumulative_output_space fixed bin (71), /* cumulative amount of space allocated for output */ 3 81 2 cumulative_control_space fixed bin (71), /* cumulative amount of space allocated by tty_space_man$get_space */ 3 82 2 input_space_updates fixed bin (35), /* number of increments to cumulative_input_space */ 3 83 2 output_space_updates fixed bin (35), /* number of increments to cumulative_output_space */ 3 84 2 control_space_updates fixed bin (35), /* number of increments to cumulative_control_space */ 3 85 2 minimum_free_space fixed bin (18), /* smallest amount of free space ever available */ 3 86 3 87 2 current_input_space fixed bin (18), /* amount of space currently allocated for input */ 3 88 2 current_output_space fixed bin (18), /* amount of space currently allocated for output */ 3 89 2 current_control_space fixed bin (18), /* amount of space currently allocated by get_space */ 3 90 2 tty_lock_calls fixed bin (35), /* number of calls to tty_lock$lock entries */ 3 91 2 found_channel_locked fixed bin (35), /* number of times tty_lock found channel already locked */ 3 92 2 max_wait_time fixed bin (35), /* longest time waited for any channel lock */ 3 93 2 total_wait_time fixed bin (71), /* total amount of time spent waiting for channel locks */ 3 94 3 95 2 echo_neg_time fixed bin (71), /* cumulative time spent doing echo negotiation */ 3 96 2 echo_neg_interrupts fixed bin (35), /* Echo-negotiated shipments */ 3 97 2 echo_neg_r0_chars fixed bin (35), /* Chars echoed by ring 0 */ 3 98 2 echo_neg_mux_chars fixed bin (35), /* Chars echoed by mux */ 3 99 2 echo_neg_sndopt_restarts fixed bin (35), /* Echo reinits */ 3 100 2 echo_neg_mux_nonecho fixed bin (35), 3 101 2 echo_neg_entries fixed bin (35), /* Entries into negotiate */ 3 102 3 103 2 echo_neg_mux_inhibit bit (1) aligned, /* For testing */ 3 104 2 n_queued_interrupts fixed bin (35), /* number of interrupts queued by tty_lock */ 3 105 2 trace unaligned, /* tracing information */ 3 106 3 flags, 3 107 4 enable bit, /* global tracing control */ 3 108 4 default_mode bit, /* whether to trace channels by default */ 3 109 4 read bit, /* read */ 3 110 4 write bit, /* write */ 3 111 4 data bit, /* buffers on reads and writes */ 3 112 4 control bit, /* control, priv_control, and hpriv_control */ 3 113 4 modes bit, /* (get set check)_modes */ 3 114 4 interrupt bit, /* interrupt, interrupt_later */ 3 115 4 init bit, /* init_multiplexer, terminate_multiplexer */ 3 116 4 start bit, /* start, stop */ 3 117 4 shutdown bit, /* shutdown */ 3 118 4 space_man bit, /* tty_space_man$* */ 3 119 4 pad_flags bit (6), 3 120 3 data_offset bit (18), /* offset of tracing data */ 3 121 3 122 2 recoverable_error_severity fixed bin, /* Syserr severity for recoverable MCS errors */ 3 123 3 124 2 timer_lock bit (36) aligned, /* Lock owned by mcs_timer */ 3 125 2 next_timer_offset bit (18) aligned, /* Offset of next timer to come due */ 3 126 2 timer_count fixed bin, /* Number of timers outstanding */ 3 127 2 timer_process bit (36) aligned, /* Who is doing timers? */ 3 128 3 129 2 timer_ev_chn fixed bin (71), /* How get get him */ 3 130 2 timer_lock_wait_time fixed bin (71), /* CPU time spent spinning on timer lock */ 3 131 3 132 2 timer_lock_count fixed bin (35), /* Number of times timer lock locked */ 3 133 2 timer_lock_wait_count fixed bin (35), /* Number of times imer lock waited on */ 3 134 2 timer_call_time fixed bin (71), /* CPU time spent in call side timer operations */ 3 135 3 136 2 timer_polling_time fixed bin (71), /* CPU time spent polling (including channel_manager) */ 3 137 2 timer_set_calls fixed bin (35), /* Number of calls to mcs_timer$set, set_wired */ 3 138 2 timer_reset_calls fixed bin (35), /* Number of calls to mcs_timer$reset, reset_wired */ 3 139 3 140 2 timer_change_calls fixed bin (35), /* Number of calls to mcs_timer$change, change_wired */ 3 141 2 timer_poll_calls fixed bin (35), /* Number of calls to mcs_timer$poll */ 3 142 2 timer_error_calls fixed bin (35), /* Number of mcs_timer calls ending with recoverable errors */ 3 143 2 timer_duplicate_pollings fixed bin (35), /* Number of timer polling found in progress on other CPU */ 3 144 3 145 2 tty_area_lock like hc_fast_lock, /* to prevent contention in allocating/freeing in tty_area */ 3 146 3 147 2 pad2 (13) fixed bin (35), 3 148 3 149 2 free_space fixed bin; /* start of free space region */ 3 150 3 151 4 1 /* BEGIN INCLUDE FILE...hc_fast_lock.incl.pl1 */ 4 2 4 3 /* Created November 1984 by Robert Coren to replace hc_lock.incl.pl1 */ 4 4 4 5 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 4 6 4 7 /* format: style3 */ 4 8 4 9 declare lock_ptr pointer; 4 10 declare 1 hc_fast_lock aligned based (lock_ptr), 4 11 2 pid bit (36) aligned, /* holder of lock */ 4 12 2 event bit (36) aligned, /* event associated with lock */ 4 13 2 flags aligned, 4 14 3 notify_sw bit (1) unaligned, 4 15 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 4 16 4 17 /* END INCLUDE FILE...hc_fast_lock.incl.pl1 */ 3 152 3 153 3 154 /* END INCLUDE FILE ... tty_buf.incl.pl1 */ 2476 2477 /* BEGIN INCLUDE FILE ... wtcb.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 5 6* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 5 7* Add data needed for the uncp multiplexer (DSA gateway) interface 5 8* implementation. 5 9* END HISTORY COMMENTS */ 5 10 5 11 5 12 /* 5 13* Moved from tty_buf.incl.pl1 Aug 78 by J. Nicholls plus changes for ring 0 demultiplexing 5 14* Error code added Nov. 1982 by Robert Coren 5 15* Modified December 1984 by Robert Coren to invent "more_flags" structure and 5 16* its first flag, line_status_disabled 5 17* Reported modifications for the DN7100 interim in August 85. 5 18**/ 5 19 5 20 dcl wtcbp ptr; /* pointer to head of wtcb */ 5 21 5 22 dcl 1 wtcb based (wtcbp) aligned, /* wired terminal control block */ 5 23 2 hevent fixed bin (71) aligned, /* event channel for hangup/dialup signal */ 5 24 2 event fixed bin (71) aligned, /* users event channel, for uproc */ 5 25 5 26 2 line_status bit (72) aligned, /* actual line status sent by fnp */ 5 27 5 28 2 tcb_ptr ptr unal, /* pointer to tcb */ 5 29 2 pad1 fixed bin (35), /* formerly time dialedup */ 5 30 5 31 2 hproc bit (36) aligned, /* boss processid */ 5 32 2 uproc bit (36) aligned, /* tty user processid */ 5 33 5 34 2 baud_rate fixed bin (18) unal uns, /* baud rate of this line */ 5 35 2 line_type fixed bin (18) unal uns, /* line type for line protocol */ 5 36 5 37 2 flags unaligned, 5 38 3 listen bit (1) unaligned, /* if on, listen for dialups */ 5 39 3 dialed bit (1) unaligned, /* if on, line is dialed up */ 5 40 3 send_output bit (1) unaligned, /* on if DN355 requested more output */ 5 41 5 42 3 qenable bit (1) unaligned, /* if on, signal quits */ 5 43 3 qflag bit (1) unaligned, /* on after quit, causes writes to be ignored */ 5 44 3 end_frame bit (1) unaligned, /* write chain fills ards frame */ 5 45 5 46 3 notify_reqd bit (1) unaligned, /* if on, do notify after unlocking lock */ 5 47 3 work_reqd bit (1) unaligned, /* if on, call dn355 before returning */ 5 48 3 dialing bit (1) unaligned, /* if on, 355 is dialing a phone number */ 5 49 5 50 3 dial_status_valid bit (1) unaligned, /* if on, dial_status_code is valid */ 5 51 3 input_available bit (1) unaligned, /* input for this device is waiting in wired space */ 5 52 3 tcb_initialized bit (1) unaligned, /* if on, tcb has been initialized */ 5 53 5 54 3 wflag bit (1) unaligned, /* process blocked on output */ 5 55 3 rflag bit (1) unaligned, /* process blocked on input */ 5 56 3 wru bit (1) unaligned, /* reading answerback */ 5 57 5 58 3 hndlquit bit (1) unaligned, /* on if in hndlquit mode */ 5 59 3 count_lines bit (1) unaligned, /* on if tcb.linemax > 0 */ 5 60 3 line_status_present bit (1) unaligned, /* fnp has sent line status */ 5 61 5 62 3 sync_line bit (1) unaligned, /* channel is synchronous line type */ 5 63 3 breakall bit (1) unaligned, /* channel is in breakall mode */ 5 64 3 scroll bit (1) unaligned, /* channel is in scroll mode */ 5 65 5 66 3 negotiating_echo bit (1) unaligned, /* ring zero to echo chars. */ 5 67 3 wake_tbl bit (1) unaligned, /* on if in wake_tbl mode */ 5 68 3 allow_wakeup bit (1) unaligned, /* on to allow input wakeup in wake_tbl mode */ 5 69 5 70 3 receive_mode_device bit (1) unaligned, /* device must be told to enter receive mode */ 5 71 3 mark_set bit (1) unal, /* write_with_mark call outstanding */ 5 72 3 masked bit (1) unal, /* channel masked by FNP */ 5 73 5 74 2 dial_status_code fixed bin (8) unaligned, /* code returned by 355 after dialing a phone number */ 5 75 5 76 2 fblock fixed bin (17) unaligned, /* oldest read pointer, block */ 5 77 2 lblock fixed bin (17) unaligned, /* newest read block */ 5 78 5 79 2 fchar fixed bin (9) unsigned unaligned, /* first block char index */ 5 80 2 actline fixed bin (9) unsigned unaligned, /* line number of current line */ 5 81 2 actcol fixed bin (9) unsigned unaligned, /* tty column position */ 5 82 2 nramsgs fixed bin (9) unsigned unaligned, /* current number of read-ahead msgs */ 5 83 5 84 2 write_first fixed bin (17) unaligned, /* first write block */ 5 85 2 write_last fixed bin (17) unaligned, /* last write block */ 5 86 2 write_cnt fixed bin (17) unaligned, /* count of chars in write chain */ 5 87 2 white_col fixed bin (17) unaligned, /* column position resulting from trailing white space */ 5 88 5 89 2 max_buf_size fixed bin (9) unal uns, /* maximum-size buffer to be allocated for this channel */ 5 90 2 buffer_pad fixed bin (9) unal uns, /* amount of pad to be left in output buffers */ 5 91 2 devx fixed bin (17) unaligned, /* index into lct of channel's entry */ 5 92 2 echdp bit (18) unaligned, /* echo negotiation data ptr */ 5 93 2 waketp bit (18) unaligned, /* wakeup table offset */ 5 94 2 prompt_len fixed bin (8) unaligned, /* number of chars in prompt string */ 5 95 2 prompt char (3) unaligned, /* text of prompt message */ 5 96 2 line_delimiter char (1) unal, /* line delimiter for tty_read parse */ 5 97 2 more_flags unaligned, /* in addition to flags (above) */ 5 98 3 line_status_disabled bit (1) unaligned, /* "1"b => don't relay line_status interrupts */ 5 99 2 send_turn bit (1) unal, /* For the Dn7100 interim */ 5 100 2 pad bit (25) unal, 5 101 2 error_code fixed bin (35), /* error code returned by channel_manager to tty_interrupt */ 5 102 2 pad2 bit (36); 5 103 5 104 /* Ends on doubleword boundary */ 5 105 5 106 /* END INCLUDE FILE ... wtcb.incl.pl1 */ 2477 2478 /* BEGIN INCLUDE FILE ... tcb.incl.pl1 */ 6 2 6 3 /* Date Last Modified and Reason 6 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 6 5* Modified 2/6/78 by Robert Coren to add input_msg_size 6 6* Modified 4/18/78 by Robert Coren to add framing_chars 6 7* Modified 8/31/78 by J. Nicholls to add scroll mode 6 8* Extracted 9/12/78 by J. Stern from tty_data.incl.pl1 6 9* Modified Oct.1979 by Robert Coren to expand to 36 possible modes 6 10* Modified 1/21/80 by Robert Coren to add no_outp, oddp, & eight_bit modes 6 11* Modified 10/08/80 by Robert Coren to add meters for tty_read & tty_write 6 12* Modified: 10 November 1980 by G. Palter to add can_type and explicit padding 6 13* Modified 12/04/80 by Robert Coren to add saved copy of meters 6 14* Modified 2/24/81 by Robert Coren to add time spent in tty_read and _write 6 15* Modified April 1981 by Robert Coren to add time last dialed up 6 16**/ 6 17 6 18 dcl tcbp ptr; 6 19 6 20 dcl 1 tcb based (tcbp) aligned, /* declaration of per terminal control block */ 6 21 6 22 2 terminal_type char (32) unaligned, /* terminal type name */ 6 23 2 tables, 6 24 3 input_mvtrp bit (18) unaligned, /* rel pointer to current input mvt table */ 6 25 3 output_mvtrp bit (18) unaligned, /* rel pointer to current output mvt table */ 6 26 3 input_tctrp bit (18) unaligned, /* rel pointer to current input tct table */ 6 27 3 output_tctrp bit (18) unaligned, /* rel pointer to current output tct table */ 6 28 3 specialrp bit (18) unaligned, /* rel pointer to current special chars table */ 6 29 3 delayrp bit (18) unaligned, /* rel pointer to current delay table */ 6 30 2 default_tables, 6 31 3 df_input_mvtrp bit (18) unaligned, /* rel pointer to default input mvt table */ 6 32 3 df_output_mvtrp bit (18) unaligned, /* rel pointer to default output mvt table */ 6 33 3 df_input_tctrp bit (18) unaligned, /* rel pointer to default input tct table */ 6 34 3 df_output_tctrp bit (18) unaligned, /* rel pointer to default output tct table */ 6 35 3 df_specialrp bit (18) unaligned, /* rel pointer to default special chars table */ 6 36 3 df_delayrp bit (18) unaligned, /* rel pointer to default delay table */ 6 37 2 special_input_chars unaligned, 6 38 3 erase char (1) unaligned, /* erase character */ 6 39 3 kill char (1) unaligned, /* kill character */ 6 40 2 old_type fixed bin (17) unaligned, /* old terminal type number */ 6 41 6 42 2 modes unaligned, /* modes set by order call */ 6 43 3 edited bit (1) unaligned, /* edited output mode */ 6 44 3 tabm bit (1) unaligned, /* insert output tabs mode */ 6 45 3 canm bit (1) unaligned, /* do canonical form conversion */ 6 46 6 47 3 escm bit (1) unaligned, /* do input escape conversions */ 6 48 3 erklm bit (1) unaligned, /* do erase kill processing */ 6 49 3 rawim bit (1) unaligned, /* don't convert input */ 6 50 6 51 3 rawom bit (1) unaligned, /* don't convert output */ 6 52 3 redm bit (1) unaligned, /* has red-shift function */ 6 53 3 vertsp bit (1) unaligned, /* send real ff's and vt's if on, else escape them */ 6 54 6 55 3 echo_cr bit (1) unaligned, /* echo carriage returns */ 6 56 3 echo_lf bit (1) unaligned, /* echo line feeds */ 6 57 3 echo_tab bit (1) unaligned, /* echo tabs */ 6 58 6 59 3 hndlquit bit (1) unaligned, /* cr's on quit */ 6 60 3 full_duplex bit (1) unaligned, /* xmit and receive simultaneously */ 6 61 3 echoplex bit (1) unaligned, /* echo input characters on terminal */ 6 62 6 63 3 upper_case bit (1) unaligned, /* map lower-case output into upper-case */ 6 64 3 replay bit (1) unaligned, /* replay interrupted input */ 6 65 3 polite bit (1) unaligned, /* output must start at left margin */ 6 66 6 67 3 control bit (1) unaligned, /* accept control characters */ 6 68 3 blk_xfer bit (1) unaligned, /* block transfer or "frame" mode */ 6 69 3 breakall bit (1) unaligned, /* break on all characters */ 6 70 6 71 3 scroll bit (1) unaligned, /* scroll mode for crt terminals */ 6 72 3 prefixnl bit (1) unaligned, /* prefix output iwth nl when input interrupted */ 6 73 3 wake_tbl bit (1) unaligned, /* input wakeups determined by wakeup table */ 6 74 6 75 3 iflow bit (1) unaligned, /* input flow control */ 6 76 3 oflow bit (1) unaligned, /* output flow control */ 6 77 3 no_outp bit (1) unaligned, /* don't generate output parity */ 6 78 6 79 3 eight_bit bit (1) unaligned, /* don't strip input parity */ 6 80 3 odd_parity bit (1) unaligned, /* generate odd parity (if any) */ 6 81 6 82 3 modes_pad bit (7) unaligned, 6 83 6 84 2 id char (4) unaligned, /* terminal id */ 6 85 6 86 2 colmax fixed bin (8) unaligned, /* current maximum number of columns */ 6 87 2 linemax fixed bin (8) unaligned, /* current maximum number of lines/frame */ 6 88 2 wrt_lchar fixed bin (17) unaligned, /* char within last write block */ 6 89 6 90 2 input_msg_size fixed bin, /* maximum input message size in chars */ 6 91 2 framing_chars unaligned, 6 92 3 frame_begin char (1) unaligned, /* frame-begin character */ 6 93 3 frame_end char (1) unaligned, /* frame-end character */ 6 94 2 max_output_block fixed bin (18) unsigned unaligned, /* maximum size of output block in block_acknowledge */ 6 95 6 96 2 input_suspend_seq unaligned, /* sequence for input suspension */ 6 97 3 count fixed bin (9) unsigned, 6 98 3 chars char (3), 6 99 2 input_resume_seq unaligned, /* likewise for input resumption */ 6 100 3 count fixed bin (9) unsigned, 6 101 3 chars char (3), 6 102 6 103 2 output_suspend_etb_seq unaligned, /* sequence for output suspension or end_of_block */ 6 104 3 count fixed bin (9) unsigned, 6 105 3 chars char (3), 6 106 2 output_resume_ack_seq unaligned, /* likewise for resumption or ack */ 6 107 3 count fixed bin (9) unsigned, 6 108 3 chars char (3), 6 109 6 110 2 flags unaligned, /* tty dim flag bits */ 6 111 3 breakall_enabled bit (1) unaligned, /* channel is permitted to use breakall mode */ 6 112 3 dont_count_next bit (1) unaligned, /* next output character is escaped */ 6 113 3 keyboard_locking bit (1) unaligned, /* ON if doing keybd locking for ASCIi line type */ 6 114 3 no_printer_off bit (1) unaligned, /* reject printer_off/printer_on orders */ 6 115 3 break_char_pending bit (1) unaligned, /* break character is in preconverted buffer */ 6 116 3 uproc_attached bit (1) unaligned, /* user process has attached device */ 6 117 3 block_acknowledge bit (1) unaligned, /* block acknowledgement output protocol */ 6 118 3 flags_pad bit (27) unaligned, 6 119 6 120 2 actshift bit (2) unaligned, /* tty shift, 00 none, 01 lower, 10 upper, 11 unknown */ 6 121 6 122 2 cumulative_meters, /* continuously running meters */ 6 123 3 read_calls fixed bin (35), /* number of calls to tty_read */ 6 124 3 write_calls fixed bin (35), /* number of calls to tty_write */ 6 125 3 read_chars fixed bin (35), /* after conversion */ 6 126 3 write_chars fixed bin (35), /* before conversion */ 6 127 3 read_time fixed bin (71), /* total time spent in tty_read */ 6 128 3 write_time fixed bin (71), /* total time spent in tty_write */ 6 129 2 saved_meters like tcb.cumulative_meters, /* meters saved at last dialup */ 6 130 6 131 2 can_type fixed binary (9) unaligned unsigned, /* type of canonicalization to use on this channel */ 6 132 2 pad1 bit (27) unaligned, /* to word boundary */ 6 133 2 time_dialed fixed bin (71); /* clock time of last copy_meters order */ 6 134 6 135 /* END INCLUDE FILE ... tcb.incl.pl1 */ 2478 2479 /* BEGIN INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 7 2 7 3 7 4 7 5 /****^ HISTORY COMMENTS: 7 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 7 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 7 8* Add data needed for the uncp multiplexer (DSA gateway) interface 7 9* implementation. 7 10* END HISTORY COMMENTS */ 7 11 7 12 7 13 /* 7 14* Separated from tty_buf.incl.pl1 aug 78 by J. Nicholls 7 15* Modified May 1979 by Larry Johnson to add max_buffer_tally array and to use unsigned variables. 7 16* Reported in February 1982 the modifications to add the "turn" bit in flags. 7 17**/ 7 18 7 19 dcl blockp ptr; /* pointer which block entry is based on */ 7 20 dcl free_blockp ptr; /* pointer to head of free space chain */ 7 21 7 22 7 23 dcl 1 free_block aligned based (free_blockp), /* format of start of free block */ 7 24 2 next bit (18), /* foward pointer to next free block */ 7 25 2 size fixed bin; /* number of words in this block */ 7 26 7 27 7 28 dcl 1 buffer based (blockp) aligned, /* buffer definition */ 7 29 2 next fixed bin (18) unal uns, /* addr of next buffer */ 7 30 2 flags unaligned, 7 31 3 end_of_page bit (1) unaligned, /* buffer contains end of page */ 7 32 3 converted bit (1) unaligned, /* buffer contains converted input */ 7 33 3 break bit (1) unaligned, /* buffer contains break character */ 7 34 3 mark bit (1) unaligned, /* buffer contains first character after "mark" */ 7 35 3 turn bit (1) unaligned, /* ON if the turn must be sent */ 7 36 3 pad bit (1) unaligned, 7 37 2 size_code fixed bin (3) unal uns, /* (nwords/16) - 1 */ 7 38 2 tally fixed bin (9) unal uns, /* number of characters in buffer */ 7 39 2 chars (0:59) char (1) unaligned; /* room for 60 data characters */ 7 40 7 41 /* the following array, if indexed by buffer.size_code will give maximum number of characters permitted in that buffer */ 7 42 7 43 dcl max_buffer_tally (0:7) fixed bin int static options (constant) init (60, 124, 188, 252, 316, 380, 444, 508); 7 44 7 45 /* END INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 2479 2480 /* BEGIN INCLUDE FILE ... lct.incl.pl1 */ 8 2 8 3 /* Created by J. Stern 7/26/78 */ 8 4 /* Metering information added by C. Hornig, March 1980. */ 8 5 /* Unwired saved meters added by Robert Coren, December 1980 */ 8 6 8 7 dcl lctp ptr; /* ptr to logical channel table */ 8 8 dcl lctep ptr; /* ptr to logical channel table entry */ 8 9 dcl lct_size fixed bin; /* size of lcte_array when allocated */ 8 10 8 11 dcl 1 lct aligned based (lctp), /* logical channel table */ 8 12 2 max_no_lctes fixed bin, /* maximum number of lct entries */ 8 13 2 cur_no_lctes fixed bin, /* current number of lct entries used */ 8 14 2 lcnt_ptr ptr, /* ptr to logical channel name table */ 8 15 2 queue_lock bit (36), /* lock used to serialize queueing operations */ 8 16 2 pad (11) fixed bin, 8 17 2 lcte_array (lct_size refer (lct.max_no_lctes)) like lcte; /* lct entries */ 8 18 8 19 8 20 dcl 1 lcte aligned based (lctep), /* logical channel table entry */ 8 21 2 lock bit (36), /* channel lock */ 8 22 2 data_base_ptr ptr unal, /* ptr to channel data base */ 8 23 2 channel_type fixed bin (8) unal, /* identifies channel manager program */ 8 24 2 flags unal, 8 25 3 entry_in_use bit (1) unal, /* ON if this entry in use */ 8 26 3 initialized bit (1) unal, /* ON if this channel initialized */ 8 27 3 notify_reqd bit (1) unal, /* ON if must notify when unlocking this channel */ 8 28 3 locked_for_interrupt bit (1) unal, /* ON if lock set by interrupt handler */ 8 29 3 space_needed bit (1) unal, /* ON if this channel needs buffer space */ 8 30 3 special_lock bit (1) unal, /* ON if lock is managed by multiplexer */ 8 31 3 trace_force bit (1) unal, /* ON to trace based on next bit only */ 8 32 /* OFF to XOR next bit with tty_buf.default_tracing */ 8 33 3 trace bit (1) unal, /* ON to trace this channel */ 8 34 3 unused bit (1) unal, 8 35 2 physical_channel_devx fixed bin (17) unal, /* devx of physical chan from which logical chan is derived */ 8 36 2 major_channel_info, 8 37 3 major_channel_devx fixed bin unal, /* major channel device index */ 8 38 3 subchannel fixed bin (17) unal, /* subchannel id (or data ptr) wrt major channel */ 8 39 2 queue_entries, 8 40 3 queue_head bit (18) unal, /* ptr to first queue entry for this channel */ 8 41 3 queue_tail bit (18) unal, /* ptr to last queue entry for this channel */ 8 42 2 word_counts, 8 43 3 input_words fixed bin (17) unal, /* number of input words charged to this channel */ 8 44 3 output_words fixed bin (17) unal, /* number of output words charged to this channel */ 8 45 8 46 2 meters, 8 47 3 in_bytes fixed bin (35), 8 48 3 out_bytes fixed bin (35), 8 49 3 in, 8 50 4 calls fixed bin (35), 8 51 4 interrupts fixed bin (35), 8 52 4 call_time fixed bin (71), 8 53 4 interrupt_time fixed bin (71), 8 54 3 out like lcte.meters.in, 8 55 3 control like lcte.meters.in, 8 56 2 saved_meters_ptr ptr, /* pointer to unwired copy of meters saved at last dialup */ 8 57 8 58 2 timer_offset bit (18) aligned, /* Head of list of timers for this channel */ 8 59 8 60 2 pad (3) fixed bin (35); 8 61 8 62 8 63 dcl lcntp ptr; /* ptr to logical channel name table */ 8 64 8 65 dcl 1 lcnt aligned based (lcntp), /* logical channel name table */ 8 66 2 names (lct.max_no_lctes) char (32) unal; /* channel names */ 8 67 8 68 dcl 1 saved_meters aligned based like lcte.meters; /* meters saved at dialup, allocated in tty_area */ 8 69 8 70 8 71 /* END INCLUDE FILE ... lct.incl.pl1 */ 2480 2481 /* BEGIN INCLUDE FILE ... tty_tables.incl.pl1 */ 9 2 9 3 /* Created 3/14/77 by J. Stern */ 9 4 9 5 9 6 dcl tty_tables$ ext static; /* table storage segment */ 9 7 9 8 dcl 1 tty_tables_hdr aligned based (ttytp), /* header of tty_tables segment */ 9 9 2 lock bit (36) aligned, /* lock for modifications */ 9 10 2 event fixed bin (35), /* event to wait for if locked */ 9 11 2 notify_reqd bit (1) aligned, /* if ON, notify requested after unlocking */ 9 12 2 table_area_size fixed bin (18), /* size of table allocation area */ 9 13 2 per_type_data (6), /* data kept on per table type basis */ 9 14 3 first_table bit (18) aligned, /* rel ptr to first table in list */ 9 15 3 count fixed bin, /* count of tables in list */ 9 16 2 table_area area (tty_tables_hdr.table_area_size); /* table allocation area */ 9 17 9 18 dcl ttytp ptr; /* ptr to tty_tables_hdr */ 9 19 9 20 dcl 1 table_descriptor aligned based (tdp), /* entry in threaded list of tables */ 9 21 2 pattern bit (36) aligned, /* = (18) "10"b */ 9 22 2 type fixed bin, /* table type */ 9 23 2 next_table bit (18) aligned, /* rel ptr to next table in list */ 9 24 2 prev_table bit (18) aligned, /* rel ptr to previous table in list */ 9 25 2 ref_count fixed bin, /* reference count (times added minus times deleted) */ 9 26 2 len fixed bin, /* table length in bits */ 9 27 2 table_contents bit (table_alloc_len refer (table_descriptor.len)); 9 28 9 29 dcl tdp ptr; /* ptr to table_descriptor */ 9 30 dcl table_alloc_len fixed bin; /* table length used to allocate new table_descriptor */ 9 31 9 32 9 33 /* END INCLUDE FILE ... tty_tables.incl.pl1 */ 2481 2482 /* BEGIN mailbox_ops.incl.pl1 10 2* 10 3* Created 8/15/74 by F. A. Canali 10 4* Modified 12/01/75 by J. Goldman for dial out 10 5* Modified 8/24/76 by Robert Coren to add dont_accept_calls and blast 10 6* Modified 7/28/77 by J. Stern to add set_delay_table 10 7* Modified 2/6/78 by Robert Coren to add sync_msg_size 10 8* Modified 6/29/79 by B. Greenberg for FNP echo negotiation 10 9* Modified Oct. 1979 by Robert Coren to add oflow & iflow modes 10 10* Modified 1/21/80 by Robert Coren to add parity controls 10 11* Modified 12/10/80 by Robert Coren to add report_meters 10 12* */ 10 13 10 14 dcl ( /* declaration of submailbox io commands */ 10 15 10 16 rcd init (1), /* read control data */ 10 17 rtx init (2), /* read text */ 10 18 wcd init (3), /* write control data */ 10 19 wtx init (4) /* write text */ 10 20 10 21 ) fixed bin (8) int static options (constant); 10 22 10 23 10 24 dcl ( /* declaration of submailbox op codes sent by 6180 to 355 */ 10 25 10 26 terminal_accepted init (0), /* a dialed terminal has been accepted */ 10 27 disconnect_this_line init (1), /* hang up a line */ 10 28 disconnect_all_lines init (2), /* hang up all lines */ 10 29 dont_accept_calls init (3), /* the 6180 is no longer accepting terminals */ 10 30 accept_calls init (4), /* the 6180 is ready to accept terminals */ 10 31 input_accepted init (5), /* the 6180 will accept input and has reserved 10 32* space in its circular buffer */ 10 33 set_line_type init (6), /* set the line type */ 10 34 enter_receive init (7), /* give the line to the terminal */ 10 35 set_framing_chars init (8), /* set characters for block transfer */ 10 36 blast init (9), /* BOS blast message */ 10 37 accept_direct_output init (10), /* the 6180 has an output request */ 10 38 accept_last_output init (11), /* same as above but the 355 may 10 39* unlock the keyboard and accept input 10 40* when the output transmission is through */ 10 41 dial init (12), /* use command data to dial a phone number */ 10 42 reject_request_temp init (14), /* an input request can not be serviced */ 10 43 terminal_rejected init (16), /* a dial up has been rejected */ 10 44 disconnect_accepted init (17), /* the 6180 recognizes a disconnection */ 10 45 init_complete init (18), /* 6180 system initialization is complete */ 10 46 dump_mem init (19), /* dump 355 memory */ 10 47 patch_mem init (20), /* patch 355 memory */ 10 48 fnp_break init (21), /* to control fnp break points */ 10 49 line_control init (22), /* line control order to fnp */ 10 50 sync_msg_size init (23), /* set message size for sync line */ 10 51 set_echnego_break_table init (24), /* send over echo negotiation break table */ 10 52 start_negotiated_echo init (25), /* attempt to start FNP echoing for ech. nego. */ 10 53 stop_negotiated_echo init (26), /* 6180 wants FNP to stop negotiated echo */ 10 54 init_echo_negotiation init (27), /* synchronize echo negotiation ctrs. */ 10 55 break_acknowledged init (29), /* the 6180 recognizes a break for a terminal */ 10 56 input_fc_chars init (30), /* set input flow control chars */ 10 57 output_fc_chars init (31), /* set output flow control chars */ 10 58 alter_parameters init (34), /* request to alter 355 parms for a terminal */ 10 59 checksum_error init (35), /* submailbox has a checksum error */ 10 60 report_meters init (36), /* get meters from FNP */ 10 61 set_delay_table init (37) /* tells 355 to set new delay table for channel */ 10 62 ) fixed bin (8) int static options (constant); 10 63 10 64 10 65 dcl ( /* submailbox op codes sent from 355 to 6180 */ 10 66 10 67 accept_new_terminal init (64), /* a terminal has dialed up */ 10 68 disconnected_line init (65), /* a terminal has been hung up */ 10 69 input_in_mailbox init (66), /* this mailbox contains input */ 10 70 line_masked init (67), /* channel was masked for excessive interrupts */ 10 71 s6180_params init (68), /* return bcount */ 10 72 send_output init (69), /* I am ready to send to a terminal */ 10 73 ack_echnego_init init (70), /* I have zeroed my ech. nego. ctr. */ 10 74 ack_echnego_stop init (71), /* I have sent all that I have echoed. */ 10 75 connect_to_slave init (73), /* a dialup sequence has been completed */ 10 76 accept_direct_input init (74), /* HEY! here's some input for you */ 10 77 break_condition init (75), /* a break has been hit for a terminl */ 10 78 wru_timeout init (76), /* no answerback */ 10 79 error_message init (77), /* error message from the 355 */ 10 80 first_acu_op_code init (80), 10 81 acu_no_power init (80), /* power indicator of auto-call unit is off */ 10 82 acu_line_occupied init (81), /* auto-call unit's line is being used */ 10 83 acu_dial_failure init (82), /* dial out failed */ 10 84 acu_no_good init (83), /* invalid dial out attempt */ 10 85 last_acu_op_code init (83), 10 86 line_status init (84) /* line status reported by fnp */ 10 87 ) fixed bin (8) int static options (constant); 10 88 10 89 dcl ( /* declaration of sub operations for alter parameters */ 10 90 10 91 Breakchar init (1), /* specifies break character */ 10 92 Nocontrol init (2), /* enter/leave nocontrol mode */ 10 93 Fullduplex init (3), /* perform character echoing */ 10 94 Break init (4), /* send line break to terminal */ 10 95 Errormsg init (5), /* indicates error detected by 355 */ 10 96 Meter init (6), /* read metering info */ 10 97 Sensepos init (7), /* sense position of carrier */ 10 98 Crecho init (8), /* enter/leave crecho mode */ 10 99 Lfecho init (9), /* enter/leave line feed echo mode */ 10 100 Lock init (10), /* lock keyboard */ 10 101 Msg init (11), /* precanned msg for dialing terminals */ 10 102 Upstate init (12), /* are you up? */ 10 103 Dumpoutput init (13), /* throw away output */ 10 104 Tabecho init (14), /* echo tabs */ 10 105 Setbusy init (15), /* force dataset busy */ 10 106 Listen init (16), /* answer the phone */ 10 107 Hndlquit init (17), /* send newline on receipt of quit */ 10 108 Chngstring init (18), /* printer addressing string definition */ 10 109 Wru init (19), /* read answerback */ 10 110 Echoplex init (20), /* enter/leave echoplex mode */ 10 111 Xmit_hold init (21), /* start/stop transmit hold */ 10 112 Dumpinput init (22), /* throw away input */ 10 113 Replay init (23), /* replay interrupted input */ 10 114 Polite init (24), /* write only if at left margin */ 10 115 Block_xfer init (25), /* block transfer or "frame" mode */ 10 116 Set_buffer_size init (26), /* set input buffer size */ 10 117 Breakall init (27), /* break on all characters */ 10 118 Prefixnl init (28), /* prefix output with newlines if input present */ 10 119 Input_flow_control init (29), /* iflow mode */ 10 120 Output_flow_control init (30), /* oflow mode */ 10 121 Odd_parity init (31), /* generate odd parity */ 10 122 Eight_bit_in init (32), /* 8bit mode */ 10 123 Eight_bit_out init (33) /* no_outp mode */ 10 124 ) fixed bin (8) int static options (constant); 10 125 10 126 dcl global_opcodes (9) fixed bin (8) int static options (constant) init ( 10 127 2, /* disconnect_all_lines */ 10 128 3, /* dont_accept_calls */ 10 129 4, /* accept_calls */ 10 130 9, /* blast */ 10 131 19, /* dump_mem */ 10 132 20, /* patch_mem */ 10 133 21, /* fnp_break */ 10 134 36, /* report_meters */ 10 135 77); /* error_message */ 10 136 10 137 /* END of mailbox_ops.incl.pl1 */ 2482 2483 /* BEGIN INCLUDE FILE ... net_event_message.incl.pl1 */ 11 2 11 3 /****^ HISTORY COMMENTS: 11 4* 1) change(86-07-30,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 11 5* install(86-10-09,MR12.0-1181): 11 6* This include file was formerly tty_event_message.incl.pl1. It has been 11 7* updated with different fields and new constants, and renamed to 11 8* net_event_message.incl.pl1 11 9* 2) change(87-04-20,GDixon), approve(87-07-13,MCR7694), 11 10* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 11 11* Add NETWORK_TYPE_VALUES array. 11 12* END HISTORY COMMENTS */ 11 13 11 14 /* describes event message passed with wakeups from the tty DIM */ 11 15 /* Created 5/24/76 by Robert S. Coren */ 11 16 11 17 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 11 18 11 19 dcl net_event_message_arg fixed bin (71); /* For calling IPC */ 11 20 dcl NET_EVENT_MESSAGE_VERSION_1 bit (2) internal static options (constant) init ("10"b); 11 21 11 22 dcl 1 net_event_message aligned based (addr (net_event_message_arg)), 11 23 2 version bit (2) unaligned, /* Currently version 1 */ 11 24 2 reason bit (16) unaligned, /* Additional info about the event */ 11 25 2 pad bit (6) unaligned, /* Must be zero */ 11 26 2 network_type fixed bin (4) unsigned unaligned, 11 27 /* See below for constants */ 11 28 2 type fixed bin (8) unsigned unaligned, 11 29 /* Type of interrupt, see below */ 11 30 2 handle fixed bin (35) aligned;/* Caller's handle (devx for MCS, handle for DSA) */ 11 31 11 32 /* Network type constants */ 11 33 11 34 dcl MCS_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (0); 11 35 dcl DSA_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (1); 11 36 dcl MOWSE_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (2); 11 37 11 38 dcl NETWORK_TYPE_VALUES (0:2) char(8) varying int static options(constant) init( 11 39 "MCS", 11 40 "DSA", 11 41 "MOWSE"); 11 42 11 43 11 44 /* MCS event message type constants */ 11 45 11 46 dcl MAX_MCS_EVENT_MSG_TYPE fixed bin internal static options (constant) init (8); 11 47 11 48 dcl MCS_UNSPECIFIED_MSG fixed bin internal static options (constant) init (0); 11 49 /* used for "start" order, etc. */ 11 50 dcl MCS_DIALUP_MSG fixed bin internal static options (constant) init (1); 11 51 /* dialup */ 11 52 dcl MCS_HANGUP_MSG fixed bin internal static options (constant) init (2); 11 53 /* hangup */ 11 54 dcl MCS_DIALOUT_MSG fixed bin internal static options (constant) init (3); 11 55 /* dialout status returned */ 11 56 dcl MCS_QUIT_MSG fixed bin internal static options (constant) init (4); 11 57 /* quit */ 11 58 dcl MCS_READ_MSG fixed bin internal static options (constant) init (5); 11 59 /* input arrived */ 11 60 dcl MCS_WRITE_MSG fixed bin internal static options (constant) init (6); 11 61 /* output completed */ 11 62 dcl MCS_LINE_STATUS_MSG fixed bin internal static options (constant) init (7); 11 63 /* control tables sent status */ 11 64 dcl MCS_MASKED_MSG fixed bin internal static options (constant) init (8); 11 65 /* channel masked by FNP */ 11 66 11 67 dcl MCS_MSG_TYPE_TO_PNAME (0:8) char (20) internal static options (constant) init ("unspecified", 11 68 /* 0 */ 11 69 "dialup", /* 1 */ 11 70 "hangup", /* 2 */ 11 71 "dialout status", /* 3 */ 11 72 "quit", /* 4 */ 11 73 "read", /* 5 */ 11 74 "write", /* 6 */ 11 75 "line status", /* 7 */ 11 76 "masked"); /* 8 */ 11 77 11 78 /* DSA event message type constants */ 11 79 11 80 dcl MAX_DSA_EVENT_MSG_TYPE fixed bin internal static options (constant) init (19); 11 81 11 82 dcl DSA_UNSPECIFIED_MSG fixed bin (8) uns internal static options (constant) init (0); 11 83 dcl DSA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (1); 11 84 dcl DSA_DATA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (2); 11 85 dcl DSA_DEMAND_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (3); 11 86 dcl DSA_DEMAND_TURN_MSG fixed bin (8) uns internal static options (constant) init (4); 11 87 dcl DSA_DEMAND_TURN_ACK_MSG fixed bin (8) uns internal static options (constant) init (5); 11 88 dcl DSA_PURGE_MSG fixed bin (8) uns internal static options (constant) init (6); 11 89 dcl DSA_RECOVER_MSG fixed bin (8) uns internal static options (constant) init (7); 11 90 dcl DSA_RECOVER_ACK_MSG fixed bin (8) uns internal static options (constant) init (8); 11 91 dcl DSA_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (9); 11 92 dcl DSA_RESUME_MSG fixed bin (8) uns internal static options (constant) init (10); 11 93 dcl DSA_RESUME_ACK_MSG fixed bin (8) uns internal static options (constant) init (11); 11 94 dcl DSA_SUSPEND_MSG fixed bin (8) uns internal static options (constant) init (12); 11 95 dcl DSA_SUSPEND_ACK_MSG fixed bin (8) uns internal static options (constant) init (13); 11 96 dcl DSA_TERM_ABNORMAL_MSG fixed bin (8) uns internal static options (constant) init (14); 11 97 dcl DSA_ESTABLISHMENT_MSG fixed bin (8) uns internal static options (constant) init (15); 11 98 dcl DSA_TERMINATED_MSG fixed bin (8) uns internal static options (constant) init (16); 11 99 dcl DSA_USER_UNASSIGN_MSG fixed bin (8) uns internal static options (constant) init (17); 11 100 dcl DSA_DATA_INPUT_MSG fixed bin (8) uns internal static options (constant) init (18); 11 101 dcl DSA_DATA_OUTPUT_MSG fixed bin (8) uns internal static options (constant) init (19); 11 102 11 103 dcl DSA_MSG_TYPE_TO_PNAME (0:19) char (20) internal static options (constant) init ("unspecified", 11 104 /* 0 */ 11 105 "attention", /* 1 */ 11 106 "data_attention", /* 2 */ 11 107 "demand_release_sru", /* 3 */ 11 108 "demand_turn", /* 4 */ 11 109 "demand_turn_ack", /* 5 */ 11 110 "purge", /* 6 */ 11 111 "recover", /* 7 */ 11 112 "recover_ack", /* 8 */ 11 113 "release_sru", /* 9 */ 11 114 "resume", /* 10 */ 11 115 "resume_ack", /* 11 */ 11 116 "suspend", /* 12 */ 11 117 "suspend_ack", /* 13 */ 11 118 "terminate_abnormal", /* 14 */ 11 119 "establishment", /* 15 */ 11 120 "terminated", /* 16 */ 11 121 "user_unassign", /* 17 */ 11 122 "data input", /* 18 */ 11 123 "data output"); /* 19 */ 11 124 11 125 /* END INCLUDE FILE ... net_event_message.incl.pl1 */ 2483 2484 /* BEGIN INCLUDE FiLE ... terminal_type_data.incl.pl1 */ 12 2 12 3 12 4 /****^ HISTORY COMMENTS: 12 5* 1) change(77-05-19,JStern), approve(), audit(), install(): 12 6* Created 12 7* Modified 8/14/79 by Robert Coren to convert to version 2 by adding 12 8* flow control parameters 12 9* 2) change(87-03-09,LJAdams), approve(87-04-03,MCR7646), 12 10* audit(87-05-05,Gilcrease), install(87-08-04,MR12.1-1056): 12 11* Change the ttd_version to ttd_version_3. Add the protocol field. 12 12* END HISTORY COMMENTS */ 12 13 12 14 12 15 dcl 1 terminal_type_data aligned based (ttdp), /* info structure for set_terminal_data order */ 12 16 2 version fixed bin, /* structure version */ 12 17 2 old_type fixed bin, /* old terminal type number, -1 => none */ 12 18 2 name char (32) unaligned, /* terminal type name */ 12 19 2 tables, 12 20 3 input_tr_ptr ptr, /* input translation table ptr */ 12 21 3 output_tr_ptr ptr, /* output translation table ptr */ 12 22 3 input_cv_ptr ptr, /* input conversion table ptr */ 12 23 3 output_cv_ptr ptr, /* output conversion table ptr */ 12 24 3 special_ptr ptr, /* special chars table ptr */ 12 25 3 delay_ptr ptr, /* delay table ptr */ 12 26 2 editing_chars unaligned, 12 27 3 erase char (1) unaligned, 12 28 3 kill char (1) unaligned, 12 29 2 framing_chars unaligned, 12 30 3 frame_begin char (1) unaligned, 12 31 3 frame_end char (1) unaligned, 12 32 2 flags unal, 12 33 3 keyboard_locking bit (1), /* ON to request keyboard locking and unlocking */ 12 34 3 input_timeout bit (1), 12 35 3 output_block_acknowledge bit (1), 12 36 3 mbz bit (15), 12 37 2 line_delimiter char (1) unal, 12 38 2 mbz bit (9) unal, 12 39 12 40 /* the remainder of this structure is only present if version is 2 or more */ 12 41 12 42 2 flow_control_chars unal, 12 43 3 input_suspend char (1), 12 44 3 input_resume char (1), 12 45 3 output_suspend_etb char (1), 12 46 3 output_resume_ack char (1), 12 47 2 output_buffer_size fixed bin, 12 48 12 49 /* the remainder of this structure is only present if version is 3 or more */ 12 50 2 protocol fixed bin; /* 0=NONE; 1=MOWSE */ 12 51 12 52 12 53 dcl ttdp ptr; /* ptr to terminal_type_data structure */ 12 54 dcl ttd_version_3 fixed bin int static options (constant) init (3); 12 55 /* current version of structure */ 12 56 12 57 12 58 /* END INCLUDE FILE ... terminal_type_data.incl.pl1 */ 2484 2485 dcl ttd_version_2 fixed bin int static options (constant) init (2); 2486 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 13 2 13 3 /* Created 5/25/77 by J. Stern */ 13 4 13 5 13 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 13 7 2 version fixed bin, /* version number of this sturcture */ 13 8 2 id char (4) unaligned, /* terminal id from answerback */ 13 9 2 term_type char (32) unaligned, /* terminal type name */ 13 10 2 line_type fixed bin, /* line type number */ 13 11 2 baud_rate fixed bin, 13 12 2 reserved (4) fixed bin; /* reserved for future use */ 13 13 13 14 13 15 dcl terminal_info_ptr ptr; 13 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 13 17 13 18 13 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 2486 2487 /* BEGIN INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 14 2 14 3 /* This include file declares all the entries in tty_space_man and defines the constants 14 4** to be used for the flags argument 14 5** Modified 08/21/78 by Robert Coren to eliminate "masked" flag 14 6** Modified March 1981 by Robert Coren to add get_perm_space entry 14 7** Modified April 1981 by Robert Coren to add switch_chain entry 14 8**/ 14 9 14 10 dcl tty_space_man$get_space entry (fixed bin, ptr); 14 11 dcl tty_space_man$get_perm_space entry (fixed bin, ptr); 14 12 dcl tty_space_man$free_space entry (fixed bin, ptr); 14 13 dcl tty_space_man$get_buffer entry (fixed bin, fixed bin, bit (1), ptr); 14 14 dcl tty_space_man$free_buffer entry (fixed bin, bit (1), ptr); 14 15 dcl tty_space_man$get_chain entry (fixed bin, fixed bin, fixed bin, bit (1), ptr); 14 16 dcl tty_space_man$free_chain entry (fixed bin, bit (1), ptr); 14 17 dcl tty_space_man$switch_chain entry (fixed bin, fixed bin, bit (1), bit (1), ptr); 14 18 dcl tty_space_man$needs_space entry (fixed bin); 14 19 14 20 dcl INPUT bit (1) int static options (constant) init ("0"b); 14 21 dcl OUTPUT bit (1) int static options (constant) init ("1"b); 14 22 14 23 /* END INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 2487 2488 /* BEGIN INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 15 2 15 3 /* Created 8/25/78 by J. Stern */ 15 4 15 5 15 6 /* call channel_manager$read (devx, chain_ptr, more_input_flag, code) */ 15 7 dcl channel_manager$read entry (fixed bin, ptr, bit (1) aligned, fixed bin (35)); 15 8 15 9 /* call channel_manager$write (devx, output_ptr, code) */ 15 10 dcl channel_manager$write entry (fixed bin, ptr, fixed bin (35)); 15 11 15 12 /* call channel_manager$control (devx, control_type, info_ptr, code) */ 15 13 dcl channel_manager$control entry (fixed bin, char (*), ptr, fixed bin (35)); 15 14 15 15 /* call channel_manager$set_modes (devx, mode_change_list_ptr, code) */ 15 16 dcl channel_manager$set_modes entry (fixed bin, ptr, fixed bin (35)); 15 17 15 18 /* call channel_manager$check_modes (devx, mode_change_list_ptr, code) */ 15 19 dcl channel_manager$check_modes entry (fixed bin, ptr, fixed bin (35)); 15 20 15 21 /* call channel_manager$get_modes (devx, modes, code) */ 15 22 dcl channel_manager$get_modes entry (fixed bin, char (*), fixed bin (35)); 15 23 15 24 /* call channel_manager$interrupt (devx, int_type, int_data) */ 15 25 dcl channel_manager$interrupt entry (fixed bin, fixed bin, bit (72) aligned); 15 26 15 27 /* call channel_manager$interrupt_later (devx, int_type, int_data) */ 15 28 dcl channel_manager$interrupt_later entry (fixed bin, fixed bin, bit (72) aligned); 15 29 15 30 /* call channel_manager$queued_interrupt (devx, int_type, int_data) */ 15 31 dcl channel_manager$queued_interrupt entry (fixed bin, fixed bin, bit (72) aligned); 15 32 15 33 15 34 /* END INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 2488 2489 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 16 2 16 3 /* Written November 10 1975 by Paul Green */ 16 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 16 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 16 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 16 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 16 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 16 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 16 10 16 11 16 12 /****^ HISTORY COMMENTS: 16 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 16 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 16 15* Add a DSA line type. 16 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 16 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 16 18* Add HASP_OPR to identify HASP workstation consoles with login service. 16 19* END HISTORY COMMENTS */ 16 20 16 21 16 22 declare (LINE_MC initial (-2), 16 23 LINE_TELNET initial (-1), 16 24 LINE_UNKNOWN initial (0), 16 25 LINE_ASCII initial (1), 16 26 LINE_1050 initial (2), 16 27 LINE_2741 initial (3), 16 28 LINE_ARDS initial (4), 16 29 LINE_SYNCH initial (5), 16 30 LINE_G115 initial (6), 16 31 LINE_BSC initial (7), 16 32 LINE_ETX initial (8), 16 33 LINE_VIP initial (9), 16 34 LINE_ASYNC1 initial (10), 16 35 LINE_ASYNC2 initial (11), 16 36 LINE_ASYNC3 initial (12), 16 37 LINE_SYNC1 initial (13), 16 38 LINE_SYNC2 initial (14), 16 39 LINE_SYNC3 initial (15), 16 40 LINE_POLLED_VIP initial (16), 16 41 LINE_X25LAP initial (17), 16 42 LINE_HDLC initial (18), 16 43 LINE_COLTS initial (19), 16 44 LINE_DSA initial (20), 16 45 LINE_HASP_OPR initial (21) 16 46 ) fixed bin internal static options (constant); 16 47 16 48 dcl max_line_type fixed bin int static options (constant) init (21); 16 49 16 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 16 51 16 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 16 53 16 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 16 55 "MC", /* -2 */ 16 56 "TELNET", /* -1 */ 16 57 "none", /* 0 */ 16 58 "ASCII", /* 1 */ 16 59 "1050", /* 2 */ 16 60 "2741", /* 3 */ 16 61 "ARDS", /* 4 */ 16 62 "Sync", /* 5 */ 16 63 "G115", /* 6 */ 16 64 "BSC", /* 7 */ 16 65 "202ETX", /* 8 */ 16 66 "VIP", /* 9 */ 16 67 "ASYNC1", /* 10 */ 16 68 "ASYNC2", /* 11 */ 16 69 "ASYNC3", /* 12 */ 16 70 "SYNC1", /* 13 */ 16 71 "SYNC2", /* 14 */ 16 72 "SYNC3", /* 15 */ 16 73 "POLLED_VIP", /* 16 */ 16 74 "X25LAP", /* 17 */ 16 75 "HDLC", /* 18 */ 16 76 "COLTS", /* 19 */ 16 77 "DSA", /* 20 */ 16 78 "HASP_OPR"); /* 21 */ 16 79 16 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 2489 2490 /* BEGIN INCLUDE FILE mcs_echo_neg.incl.pl1 Bernard Greenberg 1/20/79 */ 17 2 17 3 17 4 17 5 /****^ HISTORY COMMENTS: 17 6* 1) change(86-04-23,Coren), approve(86-04-23,MCR7300), 17 7* audit(86-05-19,Beattie), install(86-07-08,MR12.0-1089): 17 8* Changed version to 2, increased size of break table, 17 9* included named constant for break table size. 17 10* END HISTORY COMMENTS */ 17 11 17 12 17 13 /* This include file defines the callable entrypoints and argument data 17 14* structures for ring 0 echo negotiation */ 17 15 17 16 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 17 17 dcl echo_neg_datap ptr; 17 18 dcl echo_neg_data_version_2 fixed bin static options (constant) init (2); 17 19 dcl ECHO_NEG_BREAK_TABLE_SIZE 17 20 fixed bin internal static options (constant) init (255); 17 21 17 22 dcl 1 echo_neg_data based (echo_neg_datap) aligned, 17 23 /* Echo negotiation data */ 17 24 2 version fixed bin, 17 25 2 break (0:255) bit (1) unaligned, 17 26 /* Break table, 1 = break */ 17 27 2 pad bit (7) unaligned, 17 28 2 rubout_trigger_chars (2) unaligned, /* Characters that cause rubout action */ 17 29 3 char char (1) unaligned, 17 30 2 rubout_sequence_length 17 31 fixed bin (4) unsigned unaligned, 17 32 /* Length of rubout sequence, output */ 17 33 2 rubout_pad_count fixed bin (4) unsigned unaligned, 17 34 /* Count of pads needed */ 17 35 2 buffer_rubouts bit (1) unaligned, /* 1 = put rubouts and rubbed out in buffer */ 17 36 2 rubout_sequence char (12) unaligned; /* Actual rubout sequence */ 17 37 17 38 /*** VERSION 1 STRUCTURE DECLARATION FOR COMPATIBILITY (TO BE REMOVED FOR MR12) ***/ 17 39 17 40 dcl echo_neg_data_version_1 fixed bin static options (constant) init (1); 17 41 17 42 dcl 1 v1_echo_neg_data based (echo_neg_datap) aligned, 17 43 /* Echo negotiation data */ 17 44 2 version fixed bin, 17 45 2 break (0:127) bit (1) unaligned, 17 46 /* Break table, 1 = break */ 17 47 2 pad bit (7) unaligned, 17 48 2 rubout_trigger_chars (2) unaligned, /* Characters that cause rubout action */ 17 49 3 char char (1) unaligned, 17 50 2 rubout_sequence_length 17 51 fixed bin (4) unsigned unaligned, 17 52 /* Length of rubout sequence, output */ 17 53 2 rubout_pad_count fixed bin (4) unsigned unaligned, 17 54 /* Count of pads needed */ 17 55 2 buffer_rubouts bit (1) unaligned, /* 1 = put rubouts and rubbed out in buffer */ 17 56 2 rubout_sequence char (12) unaligned; /* Actual rubout sequence */ 17 57 /*** END VERSION 1 STRUCTURE ****/ 17 58 17 59 dcl ( 17 60 hcs_$tty_read_echoed, 17 61 hcs_$echo_negotiate_get_chars 17 62 ) entry (fixed bin, ptr, fixed bin (21), fixed bin (21), fixed bin (21), fixed bin (21), 17 63 fixed bin, fixed bin, fixed bin (35)); 17 64 /* 17 65* call hcs_$echo_negotiate_get_chars 17 66* (devx, datap, offset, nelem, NRETURNED, NECHOED_RETURNED, screen_left, STATE, CODE); 17 67* */ 17 68 17 69 /* END INCLUDE FILE mcs_echo_neg.incl.pl1 */ 2490 2491 /* BEGIN INCLUDE FILE mcs_echo_neg_sys.incl.pl1 Bernard Greenberg 1/20/79 */ 18 2 18 3 /* Modified 6/29/79 by BSG for FNP echo negotiation */ 18 4 18 5 18 6 /****^ HISTORY COMMENTS: 18 7* 1) change(86-04-23,Coren), approve(86-04-23,MCR7300), 18 8* audit(86-05-19,Beattie), install(86-07-08,MR12.0-1089): 18 9* To increase size of break table and to add named constants for the size. 18 10* END HISTORY COMMENTS */ 18 11 18 12 18 13 /* This include file defines the wired structure for MCS echo negotiation */ 18 14 18 15 dcl echo_datap ptr; /* Wired echo data ptr */ 18 16 dcl WIRED_ECHO_BREAK_SIZE fixed bin internal static options (constant) init (255); 18 17 dcl WORDS_IN_ECHO_BREAK_TABLE fixed bin internal static options (constant) init (8); 18 18 18 19 dcl 1 echo_data based (echo_datap) aligned, /* Wired echo data */ 18 20 2 break (0: 255) bit (1) unaligned, /* 1 = break on this character */ 18 21 2 synchronized bit (1) unal, /* Mux echo negotiation is synchronized */ 18 22 2 mux_will_echnego bit (1) unal, /* Multiplexer accepted start_neg_echnego */ 18 23 2 echo_start_pending_sndopt bit (1) unal, /* Send start_n_e when SEND_OUTPUT comes */ 18 24 2 awaiting_start_sync bit (1) unal, /* Awaiting mux reply ACK for start */ 18 25 2 awaiting_stop_sync bit (1) unal, /* Awaiting mux reply ACK for stop */ 18 26 2 pad bit (27) unaligned, 18 27 2 sync_ctr fixed bin (35), /* Protocol ctr for MUX echo neg */ 18 28 2 chars_echoed fixed bin (9) unsigned unaligned, /* Count of chars echoed */ 18 29 2 horiz_room_left fixed bin (9) unsigned unaligned, /* Room left on line */ 18 30 2 rubout_trigger_chars (2) unaligned, /* Characters that cause rubout action */ 18 31 3 char char (1) unaligned, 18 32 2 rubout_sequence_length fixed bin (4) unsigned unaligned, /* Length of rubout sequence, output */ 18 33 2 rubout_pad_count fixed bin (4) unsigned unaligned, /* Count of pads needed */ 18 34 2 buffer_rubouts bit (1) unaligned, /* 1 = put rubouts and rubbed out in buffer */ 18 35 2 rubout_sequence char (12) unaligned; /* Actual rubout sequence */ 18 36 18 37 /* END INCLUDE FILE mcs_echo_neg_sys.incl.pl1 */ 2491 2492 /* BEGIN INCLUDE FILE ... set_wakeup_table_info.incl.pl1 */ 19 2 19 3 /* Created 3/1/79 by J. Stern */ 19 4 19 5 19 6 dcl swt_infop ptr; 19 7 dcl swt_info_version_1 fixed bin static options (constant) init (1); 19 8 19 9 dcl 1 swt_info aligned based (swt_infop), /* info structure for set_wakeup_table control order */ 19 10 2 version fixed bin, /* version number of this structure */ 19 11 2 new_table like wakeup_table, /* wakeup table to set */ 19 12 2 old_table like wakeup_table; /* previous wakeup table */ 19 13 19 14 dcl wakeup_tablep ptr; 19 15 19 16 dcl 1 wakeup_table aligned based (wakeup_tablep), 19 17 2 wake_map (0:127) bit (1) unal, /* bit i ON if ith char is wakeup char */ 19 18 2 mbz bit (16) unal; 19 19 19 20 19 21 /* END INCLUDE FILE ... set_wakeup_table_info.incl.pl1 */ 2492 2493 /* BEGIN INCLUDE FILE ... set_prompt_info.incl.pl1 */ 20 2 20 3 /* Created 3/13/79 by J. Stern */ 20 4 20 5 20 6 dcl sp_infop ptr; 20 7 dcl sp_info_version_1 fixed bin static options (constant) init (1); 20 8 20 9 dcl 1 sp_info aligned based (sp_infop), /* info structure for set_prompt control order */ 20 10 2 version fixed bin, 20 11 2 message char (3) varying; /* text of prompt message */ 20 12 20 13 20 14 /* END INCLUDE FILE ... set_prompt_info.incl.pl1 */ 2493 2494 /* BEGIN INCLUDE FILE ... flow_conrol_info.incl.pl1 */ 21 2 21 3 /* This include file defines the structures used for the "input_flow_control_chars" 21 4* and "output_flow_control_chars" orders to MCS. 21 5**/ 21 6 21 7 /* Created 08/13/79 by Robert S. Coren */ 21 8 21 9 dcl 1 input_flow_control_info aligned based, 21 10 2 suspend_seq unaligned, 21 11 3 count fixed bin (9) unsigned, 21 12 3 chars char (3), 21 13 2 resume_seq unaligned, 21 14 3 count fixed bin (9) unsigned, 21 15 3 chars char (3), 21 16 2 timeout bit (1); 21 17 21 18 21 19 dcl 1 output_flow_control_info aligned based, 21 20 2 flags unaligned, 21 21 3 suspend_resume bit (1), 21 22 3 block_acknowledge bit (1), 21 23 3 mbz bit (16), 21 24 2 buffer_size fixed bin (18) unsigned unaligned, 21 25 2 suspend_or_etb_seq unaligned, 21 26 3 count fixed bin (9) unsigned, 21 27 3 chars char (3), 21 28 2 resume_or_ack_seq unaligned, 21 29 3 count fixed bin (9) unsigned, 21 30 3 chars char (3); 21 31 21 32 21 33 /* END INCLUDE FILE ... flow_control_info.incl.pl1 */ 21 34 2494 2495 /* BEGIN INCLUDE FILE...get_comm_meters_info.incl.pl1 */ 22 2 22 3 /* This include file defines the info structure(s) used with the get_meters order to MCM */ 22 4 /* A program that includes this include file must alos include lct.incl.pl1 */ 22 5 22 6 /* Written Decemeber 1980 by Robert Coren */ 22 7 22 8 dcl 1 get_comm_meters_info aligned based, /* info_ptr points to this */ 22 9 2 version fixed bin, 22 10 2 pad fixed bin, 22 11 2 subchan_ptr pointer, /* pointer to meters kept by the subchannel */ 22 12 2 logical_chan_ptr pointer, /* pointer to meters kept by channel_manager */ 22 13 2 parent_ptr pointer, /* pointer to meters kept by the parent multiplexer */ 22 14 2 subchan_type fixed bin, /* multiplexer type of subchannel */ 22 15 2 parent_type fixed bin; /* multiplexer type of parent */ 22 16 22 17 dcl 1 logical_chan_meters based aligned, /* pointed to by get_comm_meters_info.logical_chan_ptr */ 22 18 2 current_meters like lcte.meters, /* latest values */ 22 19 2 saved_meters like lcte.meters; /* values as of last copy_meters */ 22 20 22 21 dcl GET_COMM_METERS_INFO_VERSION_1 fixed bin int static options (constant) init (1); 22 22 22 23 /* END INCLUDE FILE...get_comm_meters_info.incl.pl1 */ 2495 2496 /* BEGIN INCLUDE FILE...tty_channel_meters.incl.pl1 */ 23 2 23 3 /* Include file to define structure for meters specific to tty (non-multiplexed) channels */ 23 4 /* Programs that include this file must also include tcb.incl.pl1. */ 23 5 23 6 /* Created February 1981 by Robert Coren */ 23 7 23 8 dcl tty_meterp pointer; 23 9 23 10 dcl TTY_CHANNEL_METERS_VERSION_1 int static options (constant) init (1); 23 11 23 12 dcl 1 tty_channel_meters aligned based (tty_meterp), 23 13 2 version fixed bin, 23 14 2 flags, 23 15 3 breakall bit (1) unaligned, 23 16 3 echoplex bit (1) unaligned, 23 17 3 padb bit (34) unaligned, 23 18 2 last_dialed_time fixed bin (71), /* time channel last dialed up */ 23 19 2 baud_rate fixed bin, 23 20 2 user_process bit (36), /* = wtcb.uproc */ 23 21 2 current_meters like tcb.cumulative_meters, /* meters accumulated for the "life" of the channel */ 23 22 2 saved_meters like tcb.cumulative_meters; /* meters saved when channel most recently dialed up */ 23 23 23 24 /* END INCLUDE FILE...tty_channel_meters.incl.pl1 */ 2496 2497 /* BEGIN INCLUDE FILE...tty_access_class.incl.pl1 */ 24 2 24 3 24 4 24 5 /****^ HISTORY COMMENTS: 24 6* 1) change(85-07-29,Swenson), approve(86-08-13,MCR7512), 24 7* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 24 8* Modified to align an unaligned bit value to get around compiler's padded 24 9* reference bug. 24 10* END HISTORY COMMENTS */ 24 11 24 12 24 13 /* Defines structure used by "get_required_access_class" control order */ 24 14 24 15 /* History: 24 16* 1983-04-25, Robert Coren. 24 17**/ 24 18 24 19 dcl tty_access_class_ptr pointer; 24 20 24 21 dcl 1 tty_access_class aligned based (tty_access_class_ptr), 24 22 2 access_class bit (72), /* access class assigned to the channel */ 24 23 2 access_class_set bit (1) aligned; /* "1"b => there is an access class associated with the channel */ 24 24 24 25 /* NOTE: if access_class_set = "0"b, access_class field is meaningless */ 24 26 24 27 /* END INCLUDE FILE...tty_access_class.incl.pl1 */ 2497 2498 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 25 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 25 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 25 4 25 5 /* This include file has an ALM version. Keep 'em in sync! */ 25 6 25 7 dcl ( 25 8 25 9 /* The following constants define the message action codes. This indicates 25 10*how a message is to be handled. */ 25 11 25 12 SYSERR_CRASH_SYSTEM init (1), 25 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 25 14 25 15 SYSERR_TERMINATE_PROCESS init (2), 25 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 25 17 25 18 SYSERR_PRINT_WITH_ALARM init (3), 25 19 BEEP init (3), /* Beep and print the message on the console. */ 25 20 25 21 SYSERR_PRINT_ON_CONSOLE init (0), 25 22 ANNOUNCE init (0), /* Just print the message on the console. */ 25 23 25 24 SYSERR_LOG_OR_PRINT init (4), 25 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 25 26 25 27 SYSERR_LOG_OR_DISCARD init (5), 25 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 25 29 25 30 25 31 /* The following constants are added to the normal severities to indicate 25 32*different sorting classes of messages. */ 25 33 25 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 25 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 25 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 25 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 25 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 25 39 ) fixed bin internal static options (constant); 25 40 25 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 2498 2499 /* Begin include file ..... multiplexer_types.incl.pl1 */ 26 2 26 3 26 4 26 5 /****^ HISTORY COMMENTS: 26 6* 1) change(89-03-20,Parisek), approve(89-06-01,MCR8110), 26 7* audit(89-10-09,Farley), install(89-10-25,MR12.3-1100): 26 8* Add support of protocol mpx. 26 9* END HISTORY COMMENTS */ 26 10 26 11 26 12 /* This include file defines known multiplexer types */ 26 13 /* Prepared August 1978 by Larry Johnson */ 26 14 /* Changed April 1979 to rename the fnp multiplexer mcs */ 26 15 26 16 dcl (TTY_MPX init (0), /* nonmultiplexed channel */ 26 17 MCS_MPX init (1), /* FNP running MCS */ 26 18 USER1_MPX init (2), /* a range of values for user defined multiplexers */ 26 19 USER2_MPX init (3), 26 20 USER3_MPX init (4), 26 21 USER4_MPX init (5), 26 22 USER5_MPX init (6), 26 23 IBM3270_MPX init (7), /* IBM 3270 display terminal controller */ 26 24 VIP7760_MPX init (8), /* Honeywell VIP 7760 terminal controller */ 26 25 STY_MPX init (9), /* Software Terminal Facility */ 26 26 LAP_MPX init (10), /* Link Access Protocol (X.25 level 2) */ 26 27 X25_MPX init (11), /* CCITT X.25 level 3 */ 26 28 HASP_MPX init (12), /* HASP RJE protocol */ 26 29 UNCP_MPX init (13), /* DSA protocol */ 26 30 SYSTEM2_MPX init (14), 26 31 SYSTEM1_MPX init (15), 26 32 PROTOCOL_MPX init (16)) /* TCP/IP network X.25 protocol */ 26 33 int static options (constant); 26 34 26 35 dcl mpx_types (0:16) char (32) int static options (constant) init ( 26 36 "tty", "mcs", "user1", "user2", "user3", "user4", "user5", "ibm3270", 26 37 "vip7760", "sty", "lap", "x25", "hasp", "uncp", "system2", "system1", 26 38 "protocol"); 26 39 26 40 dcl mpx_special_lock (0:16) bit (1) int static options (constant) init ( 26 41 "0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, 26 42 "0"b, "0"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b, "0"b); 26 43 26 44 /* End include file ..... multiplexer_types.incl.pl1 */ 2499 2500 2501 /* format: on */ 2502 2503 /* BEGIN MESSAGE DOCUMENTATION 2504* 2505* Message: 2506* tty_index: USER (ACCESS_CLASS) attempted invalid attachment of CHANNEL (ACCESS_CLASS) 2507* 2508* S: $info 2509* 2510* T: $run 2511* 2512* M: A process of USER (with authorization ACCESS_CLASS) attempted to use 2513* a communications channel which does not correspond to the user's 2514* authorization and the user does not have the communications privilege 2515* enabled. The request was refused. This may indicate a system error. 2516* 2517* A: $inform_ssa 2518* 2519* END MESSAGE DOCUMENTATION */ 2520 2521 2522 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0826.9 tty_index.pl1 >spec>install>1112>tty_index.pl1 2474 1 09/07/83 1610.6 aim_template.incl.pl1 >ldd>include>aim_template.incl.pl1 2475 2 10/18/88 1210.6 tty_convert.incl.pl1 >ldd>include>tty_convert.incl.pl1 2476 3 01/06/85 1422.1 tty_buf.incl.pl1 >ldd>include>tty_buf.incl.pl1 3-152 4 01/06/85 1422.1 hc_fast_lock.incl.pl1 >ldd>include>hc_fast_lock.incl.pl1 2477 5 07/21/88 2036.0 wtcb.incl.pl1 >ldd>include>wtcb.incl.pl1 2478 6 06/18/81 0900.8 tcb.incl.pl1 >ldd>include>tcb.incl.pl1 2479 7 07/21/88 2036.0 tty_buffer_block.incl.pl1 >ldd>include>tty_buffer_block.incl.pl1 2480 8 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 2481 9 02/23/79 1435.1 tty_tables.incl.pl1 >ldd>include>tty_tables.incl.pl1 2482 10 10/20/82 0938.6 mailbox_ops.incl.pl1 >ldd>include>mailbox_ops.incl.pl1 2483 11 08/06/87 0913.5 net_event_message.incl.pl1 >ldd>include>net_event_message.incl.pl1 2484 12 08/06/87 0913.5 terminal_type_data.incl.pl1 >ldd>include>terminal_type_data.incl.pl1 2486 13 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 2487 14 06/18/81 0900.8 tty_space_man_dcls.incl.pl1 >ldd>include>tty_space_man_dcls.incl.pl1 2488 15 05/06/80 0958.2 channel_manager_dcls.incl.pl1 >ldd>include>channel_manager_dcls.incl.pl1 2489 16 08/06/87 0913.4 line_types.incl.pl1 >ldd>include>line_types.incl.pl1 2490 17 07/10/86 2015.0 mcs_echo_neg.incl.pl1 >ldd>include>mcs_echo_neg.incl.pl1 2491 18 07/10/86 2015.0 mcs_echo_neg_sys.incl.pl1 >ldd>include>mcs_echo_neg_sys.incl.pl1 2492 19 04/27/79 1615.0 set_wakeup_table_info.incl.pl1 >ldd>include>set_wakeup_table_info.incl.pl1 2493 20 04/27/79 1615.0 set_prompt_info.incl.pl1 >ldd>include>set_prompt_info.incl.pl1 2494 21 11/05/79 1428.9 flow_control_info.incl.pl1 >ldd>include>flow_control_info.incl.pl1 2495 22 06/18/81 0900.6 get_comm_meters_info.incl.pl1 >ldd>include>get_comm_meters_info.incl.pl1 2496 23 06/18/81 0900.8 tty_channel_meters.incl.pl1 >ldd>include>tty_channel_meters.incl.pl1 2497 24 09/18/86 1308.0 tty_access_class.incl.pl1 >ldd>include>tty_access_class.incl.pl1 2498 25 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 2499 26 10/26/89 2011.9 multiplexer_types.incl.pl1 >ldd>include>multiplexer_types.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ANNOUNCE 000050 constant fixed bin(17,0) initial dcl 25-7 set ref 420* CV_TRANS_SIZE 000014 constant fixed bin(17,0) initial array dcl 2-129 ref 1914 1974 CV_TRANS_VERSION constant fixed bin(17,0) initial dcl 2-127 ref 1827 1970 1972 DELAY_VERSION constant fixed bin(17,0) initial dcl 2-126 ref 1488 1816 DIALED_UP constant fixed bin(17,0) initial dcl 163 ref 435 708 2204 IGNORE constant fixed bin(17,0) initial dcl 161 ref 441 662 1268 2210 INPUT 000050 constant bit(1) initial packed unaligned dcl 14-20 set ref 589* LINE_1050 constant fixed bin(17,0) initial dcl 16-22 ref 1124 LINE_2741 constant fixed bin(17,0) initial dcl 16-22 ref 1124 LINE_ARDS constant fixed bin(17,0) initial dcl 16-22 ref 1101 1109 1124 LINE_ASCII constant fixed bin(17,0) initial dcl 16-22 ref 940 1053 LINE_ETX constant fixed bin(17,0) initial dcl 16-22 ref 1124 LISTENING constant fixed bin(17,0) initial dcl 162 ref 439 710 2208 MASKED_STATE constant fixed bin(17,0) initial dcl 164 ref 437 2206 MCS_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 11-34 ref 773 MCS_UNSPECIFIED_MSG constant fixed bin(17,0) initial dcl 11-48 ref 775 NET_EVENT_MESSAGE_VERSION_1 constant bit(2) initial packed unaligned dcl 11-20 ref 772 NUL constant char(1) initial packed unaligned dcl 165 ref 930 954 958 980 1307 1307 1746 OUTPUT 000045 constant bit(1) initial packed unaligned dcl 14-21 set ref 575* SPECIAL_INFO_STRUCT_VERSION_1 000016 constant char(8) initial packed unaligned dcl 2-122 ref 1511 SPECIAL_VERSION constant fixed bin(17,0) initial dcl 2-124 ref 1528 1822 SPECIAL_VERSION_2 constant fixed bin(17,0) initial dcl 2-125 ref 1542 1822 1853 TTY_CHANNEL_METERS_VERSION_1 constant fixed bin(17,0) initial dcl 23-10 ref 1602 UNCP_MPX 000000 constant fixed bin(17,0) initial dcl 26-16 set ref 802* a_argptr parameter pointer dcl 99 set ref 499 503 674 679 1688* a_data_base_ptr parameter pointer dcl 100 set ref 499 504* 532* 539 543 a_event parameter fixed bin(71,0) dcl 101 ref 356 358 461 464 a_name parameter char packed unaligned dcl 94 set ref 90 347 356 362 485 495* a_order parameter char packed unaligned dcl 98 ref 674 678 a_sw parameter bit(1) packed unaligned dcl 97 ref 2086 2093 a_tcbp parameter pointer dcl 96 ref 1718 1723 a_wtcbp parameter pointer dcl 95 ref 1718 1722 2046 2049 2086 2089 abs builtin function dcl 276 ref 2028 2028 2072 2076 access_class based bit(72) level 2 dcl 24-21 set ref 409* 418* access_class_set 2 based bit(1) level 2 dcl 24-21 set ref 409 actline 15(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 5-22 set ref 580* actshift 30(34) based bit(2) level 2 packed packed unaligned dcl 6-20 set ref 1747* acu_dial_failure constant fixed bin(8,0) initial dcl 10-65 ref 1184 acu_line_occupied constant fixed bin(8,0) initial dcl 10-65 ref 1182 acu_no_good constant fixed bin(8,0) initial dcl 10-65 ref 1186 acu_no_power constant fixed bin(8,0) initial dcl 10-65 ref 1180 add_tablerp parameter bit(18) packed unaligned dcl 1790 set ref 1806 1938* addr builtin function dcl 276 ref 345 352 360 367 380 596 596 681 771 772 773 774 775 806 806 892 908 909 934 934 945 945 968 968 977 977 994 994 1008 1008 1017 1017 1165 1165 1299 1480 1480 1543 1766 1767 1801 1802 1845 1904 1906 1906 1907 2003 2003 2052 2080 2080 2092 2128 2128 2169 2169 2182 2195 2326 2342 2350 2350 2354 2354 2358 2358 2362 2362 2366 2366 2370 2370 2374 2374 2379 2379 2384 2384 2389 2389 2394 2394 2403 2403 2406 2406 2429 2429 2431 2431 2433 2433 2435 2435 2437 2437 2439 2439 2441 2441 2444 2444 2447 2447 2450 2450 2453 2453 2459 2459 2461 2461 aim_attributes_string 000167 automatic char(32) packed unaligned dcl 129 set ref 418* 420* aim_check_$equal 000104 constant entry external dcl 205 ref 409 aim_template based structure level 1 dcl 1-12 alter_sw parameter bit(1) packed unaligned dcl 1986 ref 1982 1993 area 000250 stack reference condition dcl 274 ref 521 524 1515 1522 area_ptr based pointer level 2 in structure "get_special_info_old" dcl 261 in procedure "tty_index" ref 1518 1535 area_ptr 2 based pointer level 2 in structure "get_special_info" dcl 256 in procedure "tty_index" ref 1520 arg_varying_char32 based varying char(32) dcl 232 ref 1159 argptr 000122 automatic pointer dcl 112 set ref 503* 679* 701* 730 735 748 749 752 753 756 757 798 801 831 834* 840 845 887 1026 1081 1088 1095 1117 1121 1121 1124 1124 1124 1124 1129 1130 1139 1159 1204 1233 1239 1249 1255 1276 1276 1279 1279 1279 1284 1284 1287 1287 1297 1297 1299 1307 1307 1313 1314 1323 1323 1323 1323 1323 1330 1331 1340 1340 1343 1344 1346 1346 1355 1358 1358 1370 1373 1374 1376 1383 1384 1389 1390 1395 1396 1398 1399 1400 1427 1488 1491 1494 1511 1518 1520 1527 1535 1536 1541 1565 1599 1617 1656 1810* 1812 1816 1822 1822 1827 1830 1845 1853 1914 1970 1972 1972 1974 1975 2014* auto_ifc 000222 automatic structure level 1 dcl 139 set ref 968 968 977 977 auto_mode 000233 automatic structure level 1 dcl 142 set ref 1008 1008 auto_ofc 000225 automatic structure level 1 dcl 140 set ref 994 994 1017 1017 backspace 4 based fixed bin(17,0) level 2 dcl 2-66 ref 2028 2076 based_arg based fixed bin(17,0) dcl 246 set ref 1081 1088 1095* baud_rate 13 based fixed bin(17,0) level 2 in structure "terminal_info" dcl 13-6 in procedure "tty_index" set ref 743* baud_rate 4 based fixed bin(17,0) level 2 in structure "tty_channel_meters" dcl 23-12 in procedure "tty_index" set ref 1605* baud_rate 12 based fixed bin(18,0) level 2 in structure "wtcb" packed packed unsigned unaligned dcl 5-22 in procedure "tty_index" set ref 743 748 1605 baud_rate 1 based fixed bin(17,0) level 2 in structure "info" packed packed unaligned dcl 225 in procedure "tty_index" set ref 748* bit builtin function dcl 276 ref 570 bit1 based bit(1) packed unaligned dcl 243 set ref 1239 1255* bit72 based bit(72) packed unaligned dcl 242 set ref 1204* black_ribbon_shift 11 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2389 2450 black_ribbon_shift 44 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2389 2450 block_acknowledge 0(01) 000225 automatic bit(1) level 3 in structure "auto_ofc" packed packed unaligned dcl 140 in procedure "tty_index" set ref 989* 1011* block_acknowledge 30(06) based bit(1) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 989* 1002* 1376* 1395 1396 block_acknowledge 0(01) based bit(1) level 3 in structure "output_flow_control_info" packed packed unaligned dcl 21-19 in procedure "tty_index" set ref 1340 1346 1376 1395* break 1 based bit(1) array level 2 in structure "echo_neg_data" packed packed unaligned dcl 17-22 in procedure "tty_index" set ref 1471 1585* break based bit(1) array level 2 in structure "echo_data" packed packed unaligned dcl 18-19 in procedure "tty_index" set ref 1458* 1459 1471* 1480 1480 1572 1585 break 1 based bit(1) array level 2 in structure "v1_echo_neg_data" packed packed unaligned dcl 17-42 in procedure "tty_index" set ref 1458 1572* breakall 17(20) based bit(1) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 1607 breakall 1 based bit(1) level 3 in structure "tty_channel_meters" packed packed unaligned dcl 23-12 in procedure "tty_index" set ref 1607* breakall_enabled 30 based bit(1) level 3 packed packed unaligned dcl 6-20 set ref 1743 1745* bs_seq 2 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2358 2433 bs_seq 10 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2358 2433 buffer_rubouts 5(17) based bit(1) level 2 in structure "v1_echo_neg_data" packed packed unaligned dcl 17-42 in procedure "tty_index" set ref 1464 1577* buffer_rubouts 11(08) based bit(1) level 2 in structure "echo_neg_data" packed packed unaligned dcl 17-22 in procedure "tty_index" set ref 1476 1590* buffer_rubouts 12(08) based bit(1) level 2 in structure "echo_data" packed packed unaligned dcl 18-19 in procedure "tty_index" set ref 1464* 1476* 1577 1590 buffer_size 0(18) based fixed bin(18,0) level 2 in structure "output_flow_control_info" packed packed unsigned unaligned dcl 21-19 in procedure "tty_index" set ref 1346 1355 1370 1398* buffer_size 0(18) 000225 automatic fixed bin(18,0) level 2 in structure "auto_ofc" packed packed unsigned unaligned dcl 140 in procedure "tty_index" set ref 992* 1014* c_chars based structure level 1 dcl 2-54 c_chars_old based structure level 1 dcl 308 set ref 2350* 2350 2354* 2354 2358* 2358 2362* 2362 2366* 2366 2370* 2370 2374* 2374 2379* 2379 2384* 2384 2389* 2389 2394* 2394 2403* 2403 2406* 2406 2429* 2429 2431* 2431 2433* 2433 2435* 2435 2437* 2437 2439* 2439 2441* 2441 2444* 2444 2447* 2447 2450* 2450 2453* 2453 2459* 2459 2461* 2461 chan_name parameter char packed unaligned dcl 2240 set ref 2237 2243 2245* channel_manager$control 000154 constant entry external dcl 15-13 ref 596 660 834 934 945 968 977 994 1017 1165 1480 1688 2014 2080 2113 2153 channel_type 2 based fixed bin(8,0) level 2 packed packed unaligned dcl 8-20 ref 381 2196 2327 2330 chars 1 based char(2) level 2 in structure "editing_chars" packed packed unaligned dcl 248 in procedure "tty_index" set ref 1279 1279 1279 1284 1284 1287 1287 1299* chars 30(09) based char(1) array level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2169 2169 chars 25(09) based char(3) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 957* chars 34(09) based char(1) array level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2128 2128 chars 24(09) based char(3) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 962* chars 1(09) based char(3) level 3 in structure "output_flow_control_info" packed packed unaligned dcl 21-19 in procedure "tty_index" set ref 1358 chars 2(09) based char(3) level 3 in structure "output_flow_control_info" packed packed unaligned dcl 21-19 in procedure "tty_index" set ref 1358 chars 26(09) based char(3) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 984* chars 27(09) based char(3) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 985* cleanup 000130 stack reference condition dcl 115 ref 373 467 564 612 633 683 clock builtin function dcl 276 ref 722 code 000460 automatic fixed bin(35,0) dcl 2062 in procedure "send_delay_table" set ref 2080* code parameter fixed bin(35,0) dcl 2144 in procedure "turn_printer_on" set ref 2141 2148* 2153* 2154 2156 2158* 2169* code parameter fixed bin(35,0) dcl 1788 in procedure "replace_table" set ref 1784 1806 1818* 1867* 1901* 1908* 1916* 1918 1929* 1930 code 000144 automatic fixed bin(35,0) dcl 120 in procedure "tty_index" set ref 596* 597 597 597* 600 806* 830* 834* 835 835 839* 842 845 893* 894 895* 898 904 1261* code parameter fixed bin(35,0) dcl 2026 in procedure "validate_delay_table" set ref 2022 2034* 2037* code parameter fixed bin(35,0) dcl 2104 in procedure "turn_printer_off" set ref 2101 2108* 2113* 2114 2116 2118* 2128* colmax 21 based fixed bin(8,0) level 2 packed packed unaligned dcl 6-20 set ref 730* 1749* comm 1(24) 000102 external static bit(1) level 3 packed packed unaligned dcl 203 ref 412 compare_tty_name_ 000106 constant entry external dcl 206 ref 2245 const_tab 2 based fixed bin(17,0) level 2 dcl 2-66 ref 2028 2028 2074 count 40 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2382 count 000222 automatic fixed bin(9,0) level 3 in structure "auto_ifc" packed packed unsigned unaligned dcl 139 in procedure "tty_index" set ref 975* count 26 based fixed bin(9,0) level 3 in structure "tcb" packed packed unsigned unaligned dcl 6-20 in procedure "tty_index" set ref 982* 999* 1396 1755* count 44 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2387 count 30 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2164 2169 2372 count 50 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2392 count 34 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2123 2128 2377 count 10 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2356 count 27 based fixed bin(9,0) level 3 in structure "tcb" packed packed unsigned unaligned dcl 6-20 in procedure "tty_index" set ref 983* 997 1000* 1756* count 24 based fixed bin(9,0) level 3 in structure "tcb" packed packed unsigned unaligned dcl 6-20 in procedure "tty_index" set ref 958* 961* 973* 1753* count 4 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2352 count 2 based fixed bin(9,0) level 3 in structure "output_flow_control_info" packed packed unsigned unaligned dcl 21-19 in procedure "tty_index" set ref 1344 count based fixed bin(9,0) level 3 in structure "input_flow_control_info" packed packed unsigned unaligned dcl 21-9 in procedure "tty_index" set ref 1323 1323 count 1 based fixed bin(9,0) level 3 in structure "input_flow_control_info" packed packed unsigned unaligned dcl 21-9 in procedure "tty_index" set ref 1323 1323 count 25 based fixed bin(9,0) level 3 in structure "tcb" packed packed unsigned unaligned dcl 6-20 in procedure "tty_index" set ref 956* 971 974* 1754* count based fixed bin(8,0) array level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2400 count 14 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2360 count 1 000222 automatic fixed bin(9,0) level 3 in structure "auto_ifc" packed packed unsigned unaligned dcl 139 in procedure "tty_index" set ref 976* count 24 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2368 count 55 based fixed bin(8,0) array level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2400 count 1 based fixed bin(9,0) level 3 in structure "output_flow_control_info" packed packed unsigned unaligned dcl 21-19 in procedure "tty_index" set ref 1343 count based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2344 count 1 000225 automatic fixed bin(9,0) level 3 in structure "auto_ofc" packed packed unsigned unaligned dcl 140 in procedure "tty_index" set ref 1015* count 2 000225 automatic fixed bin(9,0) level 3 in structure "auto_ofc" packed packed unsigned unaligned dcl 140 in procedure "tty_index" set ref 1016* count 20 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2364 cr_seq 1 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2354 2431 cr_seq 4 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2354 2431 cumulative_meters 32 based structure level 2 dcl 6-20 set ref 721 1609 current_meters 6 based structure level 2 dcl 23-12 set ref 1609* cv_trans based structure level 1 dcl 2-62 in procedure "tty_index" ref 1972 cv_trans 2 based structure level 2 in structure "cv_trans_struc" dcl 2-107 in procedure "tty_index" set ref 1972* cv_trans_struc based structure level 1 dcl 2-107 data_base_ptr 1 based pointer level 2 packed packed unaligned dcl 8-20 ref 384 2199 default 1 based fixed bin(17,0) level 2 dcl 2-112 ref 1830 default_tables 13 based structure level 2 dcl 6-20 set ref 909 1767 1802 delay based structure level 1 dcl 2-66 in procedure "tty_index" ref 1494 1912 delay 2 based structure level 2 in structure "delay_struc" dcl 2-112 in procedure "tty_index" set ref 1491* 1494* 1845 delay_struc based structure level 1 dcl 2-112 delay_type 000053 constant fixed bin(17,0) initial dcl 148 set ref 1405* 1816 1912 1927 delayrp 12(18) based bit(18) level 3 packed packed unaligned dcl 6-20 set ref 1491 1494 2068 2071 devx 20(18) based fixed bin(17,0) level 2 in structure "wtcb" packed packed unaligned dcl 5-22 in procedure "tty_index" set ref 529* 2051 2091 devx 000140 automatic fixed bin(17,0) dcl 117 in procedure "tty_index" set ref 369* 375* 380 403* 432* 444 457* 481* 488* 495 496* 502* 529 575* 589* 596* 603* 614* 660* 669* 774 806* 834* 934* 945* 968* 977* 994* 1017* 1165* 1480* 1688* 1696* 2014* 2051* 2080* 2091* 2113* 2128* 2153* 2169* 2181* 2184 2184 2190* 2195 2230* 2243* 2243* 2245 2245* 2245* 2250 2261* df_tablerp based bit(18) array packed unaligned dcl 269 set ref 913 913 913* 917* 1772 1772 1772* 1774* 1832 1838 1840* 1941 1941* dflag parameter fixed bin(17,0) dcl 106 ref 618 648 dftrpp 000244 automatic pointer dcl 272 set ref 909* 913 913 913 917 1767* 1772 1772 1772 1774 1802* 1832 1838 1840 1941 1941 dial_status_code 13(27) based fixed bin(8,0) level 2 packed packed unaligned dcl 5-22 set ref 454* 1164* 1178 1180 1182 1184 1186 1188 1190 1193* dial_status_valid 13(09) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 453* 1163* 1176 1191* dialed 13(01) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 397 435 446 472 568 650 666 708 728 738 750 769 782 815 859 873 1024 1032 1056 1141 1200 1213 1274 1293 1321 1338 1486 1499 1799 1962 2204 dialing 13(08) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 453* 1143 1162* 1166* 1174 1192* display_access_class_ 000110 constant entry external dcl 207 ref 416 418 divide builtin function dcl 276 ref 993 1355 1914 dp 000464 automatic pointer dcl 2066 in procedure "send_delay_table" set ref 2071* 2072 2073 2074 2075 2076 2077 dp parameter pointer dcl 2025 in procedure "validate_delay_table" ref 2022 2028 2028 2028 2028 2028 2028 2028 2028 2028 2028 echdp 21 based bit(18) level 2 packed packed unaligned dcl 5-22 set ref 1441 1444* 1447 1561 1564 echo_cr 17(09) based bit(1) level 3 packed packed unaligned dcl 6-20 set ref 920 1406 echo_data based structure level 1 dcl 18-19 set ref 1443 1443 1451* echo_datap 000320 automatic pointer dcl 18-15 set ref 1443 1443 1443* 1444 1444 1447* 1448 1451 1458 1459 1460 1461 1462 1463 1464 1471 1472 1473 1474 1475 1476 1480 1480 1564* 1572 1574 1575 1576 1577 1578 1585 1587 1588 1589 1590 1591 echo_lf 17(10) based bit(1) level 3 packed packed unaligned dcl 6-20 set ref 920 1406 echo_neg_data based structure level 1 dcl 17-22 echo_neg_data_version_1 constant fixed bin(17,0) initial dcl 17-40 ref 1434 1570 echo_neg_data_version_2 constant fixed bin(17,0) initial dcl 17-18 ref 1436 1583 echo_neg_datap 000316 automatic pointer dcl 17-17 set ref 1427* 1434 1436 1458 1460 1461 1462 1463 1464 1471 1472 1473 1474 1475 1476 1565* 1570 1572 1574 1575 1576 1577 1578 1583 1585 1587 1588 1589 1590 1591 echo_version_1 000207 automatic bit(1) packed unaligned dcl 131 set ref 1433* 1434* 1456 echoplex 17(14) based bit(1) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 862 876 920 945 1406 1608 echoplex 1(01) based bit(1) level 3 in structure "tty_channel_meters" packed packed unaligned dcl 23-12 in procedure "tty_index" set ref 1608* edited_escapes based structure array level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2406 2461 edited_escapes based structure array level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2406 2461 editing_chars based structure level 1 dcl 248 in procedure "tty_index" editing_chars 26 based structure level 2 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" end_frame 13(05) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 578 581* end_of_page 12 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2394 2453 end_of_page 50 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2394 2453 erase 26 based char(1) level 3 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" ref 925 erase 16 based char(1) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 925* 1284* 1739* ercode parameter fixed bin(35,0) dcl 105 set ref 90 350 356 365 369* 370 370 375* 376 402* 430* 443* 461 469 485 491 499 505* 517* 535* 539 542* 553* 559 566 600* 607 618 626 635 660* 674 691 697* 701* 717* 787* 793* 819* 825* 842* 864* 866 878* 880 904* 934* 945* 968* 977* 994* 1017* 1037* 1043* 1061* 1067* 1083* 1148* 1154* 1165* 1166 1178* 1180* 1182* 1184* 1186* 1188* 1190* 1195* 1208* 1217* 1223* 1235* 1251* 1279* 1307* 1323* 1364* 1405* 1406 1410* 1413* 1416* 1419* 1422* 1448* 1503* 1533 1561* 1663* 1668* 1681* 1688* 1693 1699* 1703* 1708* 1712* 1965* 1970* 2003* 2014* 2015 2186* 2190* 2191 2212* 2228* 2232 2250* 2252* 2346* error_code 24 based fixed bin(35,0) level 2 dcl 5-22 set ref 791 793 794* 823 825 826* 1041 1043 1044* 1065 1067 1068* 1152 1154 1155* 1221 1223 1224* error_table_$action_not_performed 000036 external static fixed bin(35,0) dcl 172 ref 553 1703 2108 2148 error_table_$bigarg 000042 external static fixed bin(35,0) dcl 172 ref 1668 1901 error_table_$buffer_big 000040 external static fixed bin(35,0) dcl 172 ref 1083 error_table_$device_not_usable 000020 external static fixed bin(35,0) dcl 172 ref 1180 error_table_$improper_data_format 000060 external static fixed bin(35,0) dcl 172 ref 1323 1364 1867 error_table_$inconsistent 000050 external static fixed bin(35,0) dcl 172 ref 1279 1307 error_table_$invalid_array_size 000072 external static fixed bin(35,0) dcl 172 ref 2346 error_table_$invalid_delay_value 000066 external static fixed bin(35,0) dcl 172 ref 2037 error_table_$invalid_device 000032 external static fixed bin(35,0) dcl 172 ref 2186 2250 error_table_$invalid_state 000030 external static fixed bin(35,0) dcl 172 ref 1182 error_table_$io_no_permission 000014 external static fixed bin(35,0) dcl 172 ref 430 717 1261 1681 1693 2228 error_table_$line_status_pending 000062 external static fixed bin(35,0) dcl 172 ref 787 819 1037 1061 1148 1217 error_table_$masked_channel 000064 external static fixed bin(35,0) dcl 172 ref 697 error_table_$no_connection 000022 external static fixed bin(35,0) dcl 172 ref 1184 error_table_$no_line_status 000056 external static fixed bin(35,0) dcl 172 ref 1208 error_table_$no_operation 000024 external static fixed bin(35,0) dcl 172 ref 1186 error_table_$no_table 000052 external static fixed bin(35,0) dcl 172 ref 1503 1561 1965 error_table_$no_wired_structure 000046 external static fixed bin(35,0) dcl 172 ref 1188 error_table_$notalloc 000054 external static fixed bin(35,0) dcl 172 ref 517 535 1448 1708 error_table_$null_info_ptr 000026 external static fixed bin(35,0) dcl 172 ref 1235 1251 error_table_$request_pending 000044 external static fixed bin(35,0) dcl 172 ref 1195 error_table_$resource_attached 000012 external static fixed bin(35,0) dcl 172 ref 402 error_table_$smallarg 000034 external static fixed bin(35,0) dcl 172 ref 1663 error_table_$undefined_order_request 000070 external static fixed bin(35,0) dcl 172 ref 370 597 835 1699 2116 2156 error_table_$unimplemented_version 000016 external static fixed bin(35,0) dcl 172 ref 1712 1818 1970 escape_length 54 based fixed bin(17,0) level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 1508 1509 1509 1543 1543 1543 1543 1543 1543 1856 1857 1857 1904 1904 1904 1904 1904 1904 1924* 1925 1925 2397 2399 2400 2406 2410 2410 2411 2411 2411 2411 2413 2413 2413 2413 2414 2414 2414 2414 2414 2414 2456* 2461 2465 2465 2466 2466 2466 2466 2468 2468 2468 2468 2469 2469 2469 2469 2469 2469 escape_length 15 based fixed bin(17,0) level 3 in structure "special_chars_struc_old" dcl 312 in procedure "tty_index" set ref 1518* 1518 1518 1535 1535 1535 1535 1535 1535 escape_length 13 based fixed bin(17,0) level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 1861 1862 1862 2397* 2406 2410 2410 2411 2411 2411 2411 2413 2413 2413 2413 2414 2414 2414 2414 2414 2414 2456 2458 2461 2465 2465 2466 2466 2466 2466 2468 2468 2468 2468 2469 2469 2469 2469 2469 2469 escape_length 56 based fixed bin(17,0) level 3 in structure "special_chars_struc" dcl 2-76 in procedure "tty_index" set ref 1520* 1520 1520 esw 000126 automatic fixed bin(17,0) dcl 114 set ref 344* 359* 397 455 event 2 based fixed bin(71,0) level 2 in structure "wtcb" dcl 5-22 in procedure "tty_index" set ref 475* 642* 776* event 000110 automatic fixed bin(71,0) dcl 110 in procedure "tty_index" set ref 358* 464* 475 477 ever_initialized 000010 internal static bit(1) initial packed unaligned dcl 146 set ref 507 510* fblock 14 based fixed bin(17,0) level 2 packed packed unaligned dcl 5-22 set ref 587 589 589 591* 798 fchar 15 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 5-22 set ref 593* ff_seq 5 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2370 2439 ff_seq 24 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2370 2439 fixed builtin function dcl 276 ref 570 2073 2075 flags 000225 automatic structure level 2 in structure "auto_ofc" packed packed unaligned dcl 140 in procedure "tty_index" flags 30 based structure level 2 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 1744* flags 27 based structure level 2 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" flags based structure level 2 in structure "output_flow_control_info" packed packed unaligned dcl 21-19 in procedure "tty_index" flags 1 based structure level 2 in structure "tty_channel_meters" dcl 23-12 in procedure "tty_index" flags 13 based structure level 2 in structure "wtcb" packed packed unaligned dcl 5-22 in procedure "tty_index" flow_control_chars 30 based structure level 2 packed packed unaligned dcl 12-15 fnp_delays 000461 automatic fixed bin(17,0) array packed unaligned dcl 2065 set ref 2068* 2072* 2073* 2074* 2075* 2076* 2077* 2080 2080 frame_begin based char(1) level 2 in structure "framing_chars" packed packed unaligned dcl 252 in procedure "tty_index" set ref 1307 1313 1383* frame_begin 26(18) based char(1) level 3 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" ref 928 frame_begin 23 based char(1) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 928* 932 1313* 1383 1746* frame_begin 000221 automatic char(1) level 2 in structure "sfc" packed packed unaligned dcl 138 in procedure "tty_index" set ref 932* frame_end 0(09) based char(1) level 2 in structure "framing_chars" packed packed unaligned dcl 252 in procedure "tty_index" set ref 1307 1314 1384* frame_end 23(09) based char(1) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 929* 930 933 1314* 1384 1746* frame_end 26(27) based char(1) level 3 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" ref 929 frame_end 0(09) 000221 automatic char(1) level 2 in structure "sfc" packed packed unaligned dcl 138 in procedure "tty_index" set ref 933* framing_chars 26(18) based structure level 2 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" framing_chars 23 based structure level 2 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" framing_chars based structure level 1 dcl 252 in procedure "tty_index" full_duplex 17(13) based bit(1) level 3 packed packed unaligned dcl 6-20 set ref 945 get_comm_meters_info based structure level 1 dcl 22-8 get_special_info based structure level 1 dcl 256 get_special_info_old based structure level 1 dcl 261 handle 1 based fixed bin(35,0) level 2 dcl 11-22 set ref 774* hc_fast_lock based structure level 1 dcl 4-10 hevent based fixed bin(71,0) level 2 dcl 5-22 set ref 477* horz_nl 1 based float bin(27) level 2 dcl 2-66 ref 2028 2028 2073 hproc 10 based bit(36) level 2 dcl 5-22 set ref 389 393* 395 477 640 652 657 661* 715 1029 1137 1258 1679 2214 2217 i 000534 automatic fixed bin(17,0) dcl 2272 in procedure "translate_wakeup_table" set ref 2279* 2280 2282* i 000136 automatic fixed bin(17,0) dcl 116 in procedure "tty_index" set ref 1130* 1130* 1132 1660* 1661 1666 1672 1673 1673 1673 1974* 1975 1975* 2128* 2169* 2399* 2400 2400 2403 2403 2406 2406* 2458* 2459 2459 2461 2461* i 000552 automatic fixed bin(17,0) dcl 2298 in procedure "untranslate_wakeup_table" set ref 2305* 2306 2308* id 1 based char(4) level 2 in structure "terminal_info" packed packed unaligned dcl 13-6 in procedure "tty_index" set ref 738* 740* id based char(4) level 2 in structure "info" packed packed unaligned dcl 225 in procedure "tty_index" set ref 752* 756* id 20 based char(4) level 2 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 740 756 1026* 1748* in 30 based structure array level 4 in structure "lct" dcl 8-11 in procedure "tty_index" in 26 based structure level 3 in structure "logical_chan_meters" dcl 22-17 in procedure "tty_index" in 2 based structure level 3 in structure "logical_chan_meters" dcl 22-17 in procedure "tty_index" in 10 based structure level 3 in structure "lcte" dcl 8-20 in procedure "tty_index" in 2 based structure level 2 in structure "saved_meters" dcl 8-68 in procedure "tty_index" info based structure level 1 dcl 225 infop parameter pointer dcl 1789 ref 1806 1810 inid based char(4) packed unaligned dcl 245 ref 1026 input_available 13(10) based bit(1) level 3 in structure "wtcb" packed packed unaligned dcl 5-22 in procedure "tty_index" set ref 798 input_available 2 based bit(1) level 2 in structure "rd_stat" dcl 234 in procedure "tty_index" set ref 798* 801* input_cv_type 000052 constant fixed bin(17,0) initial dcl 148 set ref 1410* input_escapes based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" input_escapes based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" input_escapes based structure level 3 in structure "special_chars_struc" dcl 2-76 in procedure "tty_index" input_escapes based structure level 3 in structure "special_chars_struc_old" dcl 312 in procedure "tty_index" input_flow_control_info based structure level 1 dcl 21-9 input_msg_size 22 based fixed bin(17,0) level 2 dcl 6-20 set ref 1088* 1095 input_mvtrp 10 based bit(18) level 3 packed packed unaligned dcl 6-20 set ref 1550* 2275 2278 2301 2304 input_results based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" input_results based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" input_resume 30(09) based char(1) level 3 packed packed unaligned dcl 12-15 ref 954 957 input_resume_seq 25 based structure level 2 packed packed unaligned dcl 6-20 set ref 966 1331* 1390 input_suspend 30 based char(1) level 3 packed packed unaligned dcl 12-15 ref 958 962 input_suspend_seq 24 based structure level 2 packed packed unaligned dcl 6-20 set ref 965 1330* 1389 input_tctrp 11 based bit(18) level 3 packed packed unaligned dcl 6-20 set ref 1547* input_timeout 27(01) based bit(1) level 3 packed packed unaligned dcl 12-15 ref 967 input_tr_type 000065 constant fixed bin(17,0) initial dcl 148 set ref 1413* j 000535 automatic fixed bin(17,0) dcl 2272 in procedure "translate_wakeup_table" set ref 2280* 2282 2282* j 000137 automatic fixed bin(17,0) dcl 116 in procedure "tty_index" set ref 2308* 2309 2309 keyboard_locking 27 based bit(1) level 3 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" ref 939 keyboard_locking 30(02) based bit(1) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 940 944* kill 26(09) based char(1) level 3 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" ref 926 kill 16(09) based char(1) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 926* 1287* 1740* l_tty_access_class 000230 automatic structure level 1 dcl 141 set ref 352 367 last_dialed_time 2 based fixed bin(71,0) level 2 dcl 23-12 set ref 1604* lblock 14(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 5-22 set ref 591* lcnt based structure level 1 dcl 8-65 lcnt_ptr 2 based pointer level 2 dcl 8-11 ref 494 2242 lcntp 000304 automatic pointer dcl 8-63 set ref 494* 495 2242* 2243 2245 lct based structure level 1 dcl 8-11 lct_ptr 6 based pointer level 2 dcl 3-35 ref 346 361 2183 lcte based structure level 1 dcl 8-20 lcte_array 20 based structure array level 2 dcl 8-11 set ref 380 2195 2326 lctep 000302 automatic pointer dcl 8-8 set ref 380* 381 384 2195* 2196 2199 2324 2326 2330 lctp 000300 automatic pointer dcl 8-7 set ref 346* 361* 380 494 2183* 2184 2195 2242 2243 2245 2245 2250 2326 len based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 1509 1543 1543 1857 1904 1904 1925* 2410 2411 2413 2414 2414 2465* 2466 2468 2469 2469 len based fixed bin(8,0) level 3 in structure "special_chars_old" packed packed unaligned dcl 282 in procedure "tty_index" set ref 1862 2410* 2411 2413 2414 2414 2465 2466 2468 2469 2469 len 000233 automatic fixed bin(17,0) level 2 in structure "auto_mode" dcl 142 in procedure "tty_index" set ref 1006* len based fixed bin(8,0) level 4 in structure "special_chars_struc" packed packed unaligned dcl 2-76 in procedure "tty_index" set ref 1520* len based fixed bin(8,0) level 4 in structure "special_chars_struc_old" packed packed unaligned dcl 312 in procedure "tty_index" set ref 1518* 1535 1535 len 000430 automatic fixed bin(17,0) level 2 in structure "modes_info" dcl 1988 in procedure "alter_mode" set ref 1996* 2000* length builtin function dcl 276 ref 1660 1996 2000 line_delimiter 23 based char(1) level 2 in structure "wtcb" packed packed unaligned dcl 5-22 in procedure "tty_index" set ref 937* line_delimiter 27(18) based char(1) level 2 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" ref 937 937 line_status 4 based bit(72) level 2 dcl 5-22 set ref 1204 1205* 1243* line_status_disabled 23(09) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 1239* 1240 1255 line_status_present 13(17) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 785 817 1035 1059 1146 1202 1206* 1215 1242* line_type 1(18) based fixed bin(17,0) level 2 in structure "info" packed packed unaligned dcl 225 in procedure "tty_index" set ref 749* line_type 12 based fixed bin(17,0) level 2 in structure "terminal_info" dcl 13-6 in procedure "tty_index" set ref 742* line_type 12(18) based fixed bin(18,0) level 2 in structure "wtcb" packed packed unsigned unaligned dcl 5-22 in procedure "tty_index" set ref 742 749 940 1053 1101 1109 1129* linemax 21(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 6-20 set ref 1750* listen 13 based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 439 659* 707* 1119 2208 ll based fixed bin(9,0) dcl 221 ref 730 locked 000151 automatic bit(1) initial packed unaligned dcl 123 set ref 123* 378* 2193* 2261 low builtin function dcl 276 ref 937 major_channel_devx 3 based fixed bin(17,0) level 3 packed packed unaligned dcl 8-20 ref 2324 2326 major_channel_info 3 based structure level 2 dcl 8-20 masked 13(26) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 437 694 1265 1267* 2206 max builtin function dcl 276 ref 2028 2028 max_line_type constant fixed bin(17,0) initial dcl 16-48 ref 1121 max_no_lctes based fixed bin(17,0) level 2 dcl 8-11 ref 2184 2243 2245 2245 2250 max_output_block 23(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 6-20 set ref 993* 997 1001* 1346 1355* 1368* 1398 1752* max_special_size constant fixed bin(17,0) initial dcl 157 ref 1899 mbz 0(02) 000225 automatic bit(16) level 3 packed packed unaligned dcl 140 set ref 991* 1013* message 1 based varying char(3) level 2 dcl 20-9 ref 1660 1673 meters 26 based structure array level 3 in structure "lct" dcl 8-11 in procedure "tty_index" meters 6 based structure level 2 in structure "lcte" dcl 8-20 in procedure "tty_index" min builtin function dcl 276 ref 2028 2028 2077 mode_name parameter char packed unaligned dcl 1985 ref 1982 1995 1996 1999 2000 modes 17 based structure level 2 packed packed unaligned dcl 6-20 set ref 1742* modes_info 000430 automatic structure level 1 dcl 1988 set ref 2003 2003 more_flags 23(09) based structure level 2 packed packed unaligned dcl 5-22 n_sync_line_types constant fixed bin(17,0) initial dcl 16-50 ref 1130 1132 name 000100 automatic char(32) packed unaligned dcl 109 in procedure "tty_index" set ref 347* 349* 362* 364* 420* name 2 based char(32) level 2 in structure "terminal_type_data" packed packed unaligned dcl 12-15 in procedure "tty_index" ref 924 names based char(32) array level 2 packed packed unaligned dcl 8-65 set ref 495 2243 2245* net_event_message based structure level 1 dcl 11-22 set ref 771* net_event_message_arg 000310 automatic fixed bin(71,0) dcl 11-19 set ref 771 772 773 774 775 776* network_type 0(24) based fixed bin(4,0) level 2 packed packed unsigned unaligned dcl 11-22 set ref 773* new_line_type based fixed bin(17,0) dcl 223 ref 1121 1121 1124 1124 1124 1124 1129 1130 new_table 1 based structure level 2 dcl 19-9 ref 1632 new_tablep based pointer array dcl 271 set ref 895* new_tablerp 000400 automatic bit(18) packed unaligned dcl 1792 in procedure "replace_table" set ref 1848* 1908* 1916* 1923 1929 1929 1932* 1938 1947 new_tablerp 000236 automatic bit(18) array packed unaligned dcl 270 in procedure "tty_index" set ref 891* 895* 900 901 901* 915 new_waketab 000211 automatic structure level 1 dcl 136 set ref 1632* 1633 1637 1637 1644 1644 1650 2287* nl_seq based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2350 2429 nl_seq based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2350 2429 no_printer_off 30(03) based bit(1) level 3 packed packed unaligned dcl 6-20 set ref 851* 854* 2106 2146 not_edited_escapes 14 based structure array level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2403 2459 not_edited_escapes 55 based structure array level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2403 2459 nproc parameter bit(36) packed unaligned dcl 107 ref 626 643 nramsgs 15(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 5-22 set ref 590* ntpp 000246 automatic pointer dcl 272 set ref 892* 895 null builtin function dcl 276 ref 504 515 551 660 660 1117 1139 1233 1249 1444 1448 1536 1600 1645 1812 1812 1848 2113 2113 2153 2153 oflow 17(25) based bit(1) level 3 packed packed unaligned dcl 6-20 set ref 1004 old_special_table_version 000210 automatic bit(1) packed unaligned dcl 132 set ref 1511* 1513* 1518 1525 1855* 1860* 1904 old_table 5 based structure level 2 dcl 19-9 set ref 1623* 1629* old_type 16(18) based fixed bin(17,0) level 2 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 757 923* 1741* old_type 1 based fixed bin(17,0) level 2 in structure "terminal_type_data" dcl 12-15 in procedure "tty_index" ref 923 old_waketab 000215 automatic structure level 1 dcl 137 set ref 1627* 1629 2314* order 000112 automatic char(32) packed unaligned dcl 111 set ref 678* 684 686 694 694 694 701 704 713 726 733 746 761 764 767 780 813 851 854 857 871 885 1022 1029 1053 1076 1091 1099 1107 1115 1135 1165* 1172 1198 1211 1231 1247 1258 1272 1293 1302 1319 1336 1381 1387 1393 1403 1410 1413 1416 1419 1422 1425 1484 1497 1547 1550 1553 1556 1559 1597 1615 1654 1677 1688* 2014* output_block_acknowledge 27(02) based bit(1) level 3 packed packed unaligned dcl 12-15 ref 989 990 output_buffer_size 31 based fixed bin(17,0) level 2 dcl 12-15 ref 992 993 output_cv_type 000054 constant fixed bin(17,0) initial dcl 148 set ref 1416* output_flow_control_info based structure level 1 dcl 21-19 output_mvtrp 10(18) based bit(18) level 3 packed packed unaligned dcl 6-20 set ref 1556* output_pending 2 based bit(1) level 2 dcl 238 set ref 831* 840* 845 output_resume_ack 30(27) based char(1) level 3 packed packed unaligned dcl 12-15 ref 980 985 output_resume_ack_seq 27 based structure level 2 packed packed unaligned dcl 6-20 set ref 988 1374* 1400 output_suspend_etb 30(18) based char(1) level 3 packed packed unaligned dcl 12-15 ref 984 output_suspend_etb_seq 26 based structure level 2 packed packed unaligned dcl 6-20 set ref 987 1373* 1399 output_tctrp 11(18) based bit(18) level 3 packed packed unaligned dcl 6-20 set ref 1553* output_tr_type 000064 constant fixed bin(17,0) initial dcl 148 set ref 1419* p 000554 automatic pointer dcl 2299 in procedure "untranslate_wakeup_table" set ref 2304* 2308 p 000536 automatic pointer dcl 2273 in procedure "translate_wakeup_table" set ref 2278* 2282 pad based bit(9) level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2413 2468* pad based bit(9) level 3 in structure "special_chars_old" packed packed unaligned dcl 282 in procedure "tty_index" set ref 2413* 2468 parent_mpx_type parameter fixed bin(17,0) dcl 2321 ref 2318 2327 2330 pds$access_authorization 000102 external static structure level 1 dcl 203 ref 409 409 416 416 pds$process_group_id 000076 external static char(32) dcl 200 set ref 420* pds$processid 000074 external static bit(36) packed unaligned dcl 199 ref 391 393 395 397 448 472 477 640 652 657 715 1029 1137 1258 1679 2214 2221 pflag 000266 automatic bit(1) packed unaligned dcl 621 set ref 623* 629* 638 phone_data 000156 automatic varying char(32) dcl 128 set ref 1159* 1165 1165 printer_off 7 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2379 2444 printer_off 34 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2379 2444 printer_on 30 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2374 2441 printer_on 6 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2374 2441 privileges 1(18) 000102 external static structure level 2 packed packed unaligned dcl 203 prompt 22(09) based char(3) level 2 packed packed unaligned dcl 5-22 set ref 806 806 1673* prompt_len 22 based fixed bin(8,0) level 2 packed packed unaligned dcl 5-22 set ref 802 806 1672* ptr builtin function dcl 276 ref 575 575 589 589 1447 1494 1507 1564 1626 1637 1637 1923 1929 1929 1969 2071 2122 2163 2278 2304 pxss$ring_0_wakeup 000112 constant entry external dcl 208 ref 776 qenable 13(03) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 452* 761* 764* qflag 13(04) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 452* rawom 17(06) based bit(1) level 3 in structure "tcb" packed packed unaligned dcl 6-20 in procedure "tty_index" set ref 804 805* 807* 2125 2126* 2130* 2166 2167* 2171* rawom 000142 automatic bit(1) dcl 118 in procedure "tty_index" set ref 804* 807 2125* 2130 2166* 2171 rd_stat based structure level 1 dcl 234 red_ribbon_shift 10 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2384 2447 red_ribbon_shift 40 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2384 2447 rel builtin function dcl 276 ref 1444 1647 replace_sw 000405 automatic bit(1) dcl 1795 set ref 1798* 1809* 1830 1938 replay 17(16) based bit(1) level 3 packed packed unaligned dcl 6-20 set ref 866 880 res_count 000153 automatic fixed bin(17,0) dcl 125 set ref 1344* 1346 1346 1346 1358 1358 1358 1358 1370 resetsw parameter fixed bin(17,0) dcl 108 ref 559 570 resume_or_ack_seq 2 based structure level 2 in structure "output_flow_control_info" packed packed unaligned dcl 21-19 in procedure "tty_index" set ref 1374 1400* resume_or_ack_seq 2 000225 automatic structure level 2 in structure "auto_ofc" packed packed unaligned dcl 140 in procedure "tty_index" set ref 988* resume_seq 1 based structure level 2 in structure "input_flow_control_info" packed packed unaligned dcl 21-9 in procedure "tty_index" set ref 1331 1390* resume_seq 1 000222 automatic structure level 2 in structure "auto_ifc" packed packed unaligned dcl 139 in procedure "tty_index" set ref 966* rflag 13(13) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 666* 802 809* 1049* rubout_pad_count 5(13) based fixed bin(4,0) level 2 in structure "v1_echo_neg_data" packed packed unsigned unaligned dcl 17-42 in procedure "tty_index" set ref 1463 1576* rubout_pad_count 12(04) based fixed bin(4,0) level 2 in structure "echo_data" packed packed unsigned unaligned dcl 18-19 in procedure "tty_index" set ref 1463* 1475* 1576 1589 rubout_pad_count 11(04) based fixed bin(4,0) level 2 in structure "echo_neg_data" packed packed unsigned unaligned dcl 17-22 in procedure "tty_index" set ref 1475 1589* rubout_sequence 12(09) based char(12) level 2 in structure "echo_data" packed packed unaligned dcl 18-19 in procedure "tty_index" set ref 1462* 1474* 1574 1587 rubout_sequence 5(18) based char(12) level 2 in structure "v1_echo_neg_data" packed packed unaligned dcl 17-42 in procedure "tty_index" set ref 1462 1574* rubout_sequence 11(09) based char(12) level 2 in structure "echo_neg_data" packed packed unaligned dcl 17-22 in procedure "tty_index" set ref 1474 1587* rubout_sequence_length 11 based fixed bin(4,0) level 2 in structure "echo_neg_data" packed packed unsigned unaligned dcl 17-22 in procedure "tty_index" set ref 1473 1588* rubout_sequence_length 12 based fixed bin(4,0) level 2 in structure "echo_data" packed packed unsigned unaligned dcl 18-19 in procedure "tty_index" set ref 1461* 1473* 1575 1588 rubout_sequence_length 5(09) based fixed bin(4,0) level 2 in structure "v1_echo_neg_data" packed packed unsigned unaligned dcl 17-42 in procedure "tty_index" set ref 1461 1575* rubout_trigger_chars 10(18) based structure array level 2 in structure "echo_neg_data" packed packed unaligned dcl 17-22 in procedure "tty_index" set ref 1472 1591* rubout_trigger_chars 11(18) based structure array level 2 in structure "echo_data" packed packed unaligned dcl 18-19 in procedure "tty_index" set ref 1460* 1472* 1578 1591 rubout_trigger_chars 4(27) based structure array level 2 in structure "v1_echo_neg_data" packed packed unaligned dcl 17-42 in procedure "tty_index" set ref 1460 1578* rw_switch 000143 automatic bit(2) dcl 119 set ref 570* 571 585 596 596 save_breakall_enabled 000362 automatic bit(1) packed unaligned dcl 1734 set ref 1743* 1745 saved_meters 16 based structure level 2 in structure "tty_channel_meters" dcl 23-12 in procedure "tty_index" set ref 1610* saved_meters 42 based structure level 2 in structure "tcb" dcl 6-20 in procedure "tty_index" set ref 721* 1610 sc_escape_len 000267 automatic fixed bin(17,0) dcl 2-58 set ref 1508* 1518 1518 1518 1520 1520 1520 1856* 1861* 1865 1876 1876 1924 sc_input_escape_len 000270 automatic fixed bin(17,0) dcl 2-59 set ref 1509* 1518 1518 1518 1520 1520 1520 1857* 1862* 1865 1876 1876 1898 1898 1925 scs 000100 automatic structure level 1 dcl 1876 set ref 1898 1904 1906 1906 1907 search builtin function dcl 276 ref 1279 sfc 000221 automatic structure level 1 dcl 138 set ref 934 934 size builtin function dcl 276 ref 513 513 523 523 547 547 549 549 1443 1443 1637 1637 1644 1644 1898 1912 source_ptr parameter pointer dcl 2426 ref 2418 2428 sp_info based structure level 1 dcl 20-9 sp_info_version_1 constant fixed bin(17,0) initial dcl 20-7 ref 1657 sp_infop 000326 automatic pointer dcl 20-6 set ref 1656* 1657 1660 1673 special_area based area(1024) dcl 266 ref 1518 1520 1535 special_chars 2 based structure level 2 in structure "special_chars_struc_old" dcl 312 in procedure "tty_index" set ref 2342 special_chars 2 based structure level 2 in structure "special_chars_struc" dcl 2-76 in procedure "tty_index" set ref 1543 special_chars based structure level 1 dcl 2-26 in procedure "tty_index" set ref 1543* 1543 1904* 1904 special_chars_old based structure level 1 dcl 282 special_chars_old_ptr 000264 automatic pointer dcl 281 set ref 2342* 2350 2354 2358 2362 2366 2370 2374 2379 2384 2389 2394 2397 2403 2406 2410 2411 2413 2414 2428* 2429 2431 2433 2435 2437 2439 2441 2444 2447 2450 2453 2456 2458 2459 2461 2465 2466 2468 2469 special_chars_struc based structure level 1 dcl 2-76 set ref 1520 special_chars_struc_old based structure level 1 dcl 312 set ref 1518 1535 special_input_chars 16 based structure level 2 packed packed unaligned dcl 6-20 set ref 1299 special_ptr 000124 automatic pointer dcl 113 set ref 1507* 1508 1509 1543 2122* 2123 2128 2128 2128 2163* 2164 2169 2169 2169 2344 2350 2352 2354 2356 2358 2360 2362 2364 2366 2368 2370 2372 2374 2377 2379 2382 2384 2387 2389 2392 2394 2397 2399 2400 2400 2403 2406 2410 2411 2413 2414 special_type 000051 constant fixed bin(17,0) initial dcl 148 set ref 1422* 1822 1851 1921 specialrp 12 based bit(18) level 3 packed packed unaligned dcl 6-20 set ref 1501 1507 2120 2122 2160 2163 state parameter fixed bin(17,0) dcl 2180 in procedure "setup" set ref 2177 2204* 2206* 2208* 2210* state parameter fixed bin(17,0) dcl 104 in procedure "tty_index" set ref 90 348* 356 363* 435* 437* 439* 441* 461 465* 468* 485 490* 559 562* 565* 607 610* 613* 618 626 631* 634* 662* 674 690* 708* 710* 1268* 1693* 2232* storage 000256 stack reference condition dcl 274 ref 522 525 1516 1523 str based char level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2414 2469* str based char level 3 in structure "special_chars" packed packed unaligned dcl 2-26 in procedure "tty_index" set ref 2411 2466* str based char level 3 in structure "special_chars_old" packed packed unaligned dcl 282 in procedure "tty_index" set ref 2414* 2469 str 1 000233 automatic char(8) level 2 in structure "auto_mode" dcl 142 in procedure "tty_index" set ref 1007* str 1 000430 automatic char(20) level 2 in structure "modes_info" dcl 1988 in procedure "alter_mode" set ref 1995* 1999* str based char level 3 in structure "special_chars_old" packed packed unaligned dcl 282 in procedure "tty_index" set ref 2411* 2466 string builtin function dcl 276 set ref 1458* 1458 1459 1471* 1471 1572* 1572 1585* 1585 1623* 1633 1742* 1744* 2277* 2303* subchan_ptr 2 based pointer level 2 dcl 22-8 ref 1599 substr builtin function dcl 276 set ref 571 585 957* 962* 984* 985* 1279 1279 1284 1284 1287 1287 1358 1358 1459* 1572 1673* 1673 sus_count 000152 automatic fixed bin(17,0) dcl 124 set ref 1343* 1346 1346 1346 1358 1358 1358 1358 1358 1370 1370 suspend_or_etb_seq 1 based structure level 2 in structure "output_flow_control_info" packed packed unaligned dcl 21-19 in procedure "tty_index" set ref 1373 1399* suspend_or_etb_seq 1 000225 automatic structure level 2 in structure "auto_ofc" packed packed unaligned dcl 140 in procedure "tty_index" set ref 987* suspend_resume 000225 automatic bit(1) level 3 in structure "auto_ofc" packed packed unaligned dcl 140 in procedure "tty_index" set ref 990* 1012* suspend_resume based bit(1) level 3 in structure "output_flow_control_info" packed packed unaligned dcl 21-19 in procedure "tty_index" set ref 1340 1396* suspend_seq based structure level 2 in structure "input_flow_control_info" packed packed unaligned dcl 21-9 in procedure "tty_index" set ref 1330 1389* suspend_seq 000222 automatic structure level 2 in structure "auto_ifc" packed packed unaligned dcl 139 in procedure "tty_index" set ref 965* sw 000141 automatic bit(1) dcl 118 set ref 939* 940 940 944 945 945 swt_info based structure level 1 dcl 19-9 swt_info_version_1 constant fixed bin(17,0) initial dcl 19-7 ref 1618 swt_infop 000322 automatic pointer dcl 19-6 set ref 1617* 1618 1623 1629 1632 sync_line 13(18) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 1078 1093 1132* 1304 sync_line_type 000001 constant fixed bin(17,0) initial array dcl 16-52 ref 1130 syserr 000114 constant entry external dcl 209 ref 420 tab_seq 14 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2362 2435 tab_seq 3 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2362 2435 table_ptr 4 based pointer level 2 in structure "get_special_info" dcl 256 in procedure "tty_index" set ref 1541* table_ptr 2 based pointer level 2 in structure "get_special_info_old" dcl 261 in procedure "tty_index" set ref 1527* 1536* table_size 000404 automatic fixed bin(17,0) dcl 1794 set ref 1898* 1899 1908* 1912* 1914* 1916* table_type parameter fixed bin(17,0) dcl 1787 in procedure "replace_table" set ref 1784 1806 1816 1822 1832 1835 1835 1838 1838 1840 1851 1908* 1912 1916* 1921 1927 1941 1941 1941 1944 1944 1947 table_type 000150 automatic fixed bin(17,0) dcl 122 in procedure "tty_index" set ref 894* 895* 895 895* 900* 900* 901 901* 910* 911 911 913 913 913 915 915 917* 1768* 1769 1769 1771 1772 1772 1772 1774* tablep 000416 automatic pointer dcl 1960 in procedure "get_table" set ref 1969* 1972 1975 tablep 000402 automatic pointer dcl 1793 in procedure "replace_table" set ref 1812* 1845* 1848 1856 1857 1861 1862 1904 1906* 1907* 1908* 1912 1916* 1923* 1924 1925 tablerp based bit(18) array packed unaligned dcl 268 in procedure "tty_index" set ref 911 911* 915* 1769 1769* 1771* 1835 1835* 1838* 1941 1944 1944* 1947* tablerp parameter bit(18) packed unaligned dcl 1959 in procedure "get_table" ref 1954 1965 1969 tables 10 based structure level 2 in structure "tcb" dcl 6-20 in procedure "tty_index" set ref 908 1766 1801 tables 12 based structure level 2 in structure "terminal_type_data" dcl 12-15 in procedure "tty_index" set ref 892 target_ptr parameter pointer dcl 2425 ref 2418 2429 2431 2433 2435 2437 2439 2441 2444 2447 2450 2453 2456 2459 2461 2465 2466 2468 2469 tc_data$initializer_id 000100 external static bit(36) dcl 201 ref 391 tcb based structure level 1 dcl 6-20 set ref 523 523 530* 547 547 tcb_initialized 13(11) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 386 1757* 2201 tcb_ptr 6 based pointer level 2 packed packed unaligned dcl 5-22 set ref 385 528* 544 2050 2090 2200 tcbp 000276 automatic pointer dcl 6-18 set ref 385* 397 407 449 523 523 523* 528 530 544* 547 547 547* 644 654 721 721 722 730 740 741 756 757 804 805 807 851 854 862 866 876 880 908 909 920 920 920 923 924 925 926 928 929 930 932 933 940 944 945 945 956 957 958 961 962 965 966 971 973 974 982 983 984 985 987 988 989 993 997 997 999 1000 1001 1002 1004 1026 1088 1095 1284 1287 1299 1313 1314 1330 1331 1346 1355 1368 1373 1374 1376 1383 1384 1389 1390 1395 1396 1396 1398 1399 1400 1406 1406 1406 1491 1494 1501 1507 1547 1550 1553 1556 1604 1607 1608 1609 1610 1620 1723* 1738 1739 1740 1741 1742 1743 1744 1745 1746 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1766 1767 1801 1802 2050* 2068 2071 2090* 2106 2120 2122 2125 2126 2130 2146 2160 2163 2166 2167 2171 2200* 2221 2275 2278 2301 2304 temp_lctep 000564 automatic pointer dcl 2322 set ref 2326* 2327 temp_ptr 000146 automatic pointer dcl 121 set ref 1518* 1520* 1527 1528 1535 1541 1542 1543 2342 temp_table 000530 automatic structure level 1 dcl 2271 in procedure "translate_wakeup_table" set ref 2277* 2287 temp_table 000546 automatic structure level 1 dcl 2297 in procedure "untranslate_wakeup_table" set ref 2303* 2314 term_type 2 based char(32) level 2 packed packed unaligned dcl 13-6 set ref 741* terminal_info based structure level 1 dcl 13-6 terminal_info_ptr 000314 automatic pointer dcl 13-15 set ref 735* 736 738 740 741 742 743 terminal_info_version constant fixed bin(17,0) initial dcl 13-16 ref 736 terminal_rejected constant fixed bin(8,0) initial dcl 10-24 ref 1188 terminal_type based char(32) level 2 packed packed unaligned dcl 6-20 set ref 741 924* 1738* terminal_type_data based structure level 1 dcl 12-15 time_dialed 54 based fixed bin(71,0) level 2 dcl 6-20 set ref 722* 1604 timeout 2 based bit(1) level 2 in structure "input_flow_control_info" dcl 21-9 in procedure "tty_index" ref 1323 timeout 2 000222 automatic bit(1) level 2 in structure "auto_ifc" dcl 139 in procedure "tty_index" set ref 967* trpp 000242 automatic pointer dcl 272 set ref 908* 911 911 915 1766* 1769 1769 1771 1801* 1835 1835 1838 1941 1944 1944 1947 ttd_version_2 constant fixed bin(17,0) initial dcl 2485 ref 951 ttd_version_3 constant fixed bin(17,0) initial dcl 12-54 ref 888 ttdp 000312 automatic pointer dcl 12-53 set ref 887* 888 888 892 923 924 925 926 928 929 937 937 939 951 954 957 958 962 967 980 984 985 989 990 992 993 tty_access_class based structure level 1 dcl 24-21 set ref 353* 368* tty_access_class_ptr 000332 automatic pointer dcl 24-19 set ref 352* 353 367* 368 369* 409 409 418 tty_area_manager$allocate 000116 constant entry external dcl 210 ref 523 tty_area_manager$free 000120 constant entry external dcl 211 ref 547 tty_buf based structure level 1 dcl 3-35 tty_buf$ 000142 external static fixed bin(17,0) dcl 3-19 set ref 345 360 2182 tty_channel_meters based structure level 1 dcl 23-12 tty_interrupt$set_static 000122 constant entry external dcl 212 ref 509 tty_lock$lock_channel 000124 constant entry external dcl 213 ref 375 2190 tty_lock$unlock_channel 000126 constant entry external dcl 214 ref 403 432 457 481 496 603 614 669 1696 2230 2261 tty_meterp 000330 automatic pointer dcl 23-8 set ref 1599* 1600 1602 1604 1605 1606 1607 1608 1609 1610 tty_modes 000134 constant entry external dcl 217 ref 701 1008 tty_modes$mpx_only 000136 constant entry external dcl 218 ref 2003 tty_space_man$free_chain 000152 constant entry external dcl 14-16 ref 575 589 tty_space_man$free_space 000150 constant entry external dcl 14-12 ref 549 1637 tty_space_man$get_space 000146 constant entry external dcl 14-10 ref 513 1443 1644 tty_tables$ 000144 external static fixed bin(17,0) dcl 9-6 set ref 681 2052 2092 tty_tables_mgr$add 000130 constant entry external dcl 215 ref 1908 1916 tty_tables_mgr$delete 000132 constant entry external dcl 216 ref 901 911 913 1769 1772 1835 1932 1944 tty_write$locked 000140 constant entry external dcl 219 ref 806 2128 2169 ttybp 000272 automatic pointer dcl 3-19 set ref 345* 346 360* 361 575 575 589 589 1447 1564 1626 1637 1637 2182* 2183 ttytp 000306 automatic pointer dcl 9-18 set ref 681* 1494 1507 1923 1929 1929 1969 2052* 2071 2092* 2122 2163 2278 2304 tw_type 3 based fixed bin(17,0) level 2 dcl 225 set ref 753* 757* two_chars based char(2) packed unaligned dcl 265 ref 1299 twx parameter fixed bin(17,0) dcl 103 set ref 90 348* 356 363* 444* 461 485 488 499 502 559 607 618 626 674 2181 type 0(28) based fixed bin(8,0) level 2 packed packed unsigned unaligned dcl 11-22 set ref 775* unspec builtin function dcl 276 set ref 353* 368* 409 409 416 416 527* 530* 771* 965* 965 966* 966 987* 987 988* 988 1451* 1491* uproc 11 based bit(36) level 2 dcl 5-22 set ref 397 448* 472* 643* 652* 776* 1606 2221 uproc_attach_required_for_setup 000154 automatic bit(1) initial packed unaligned dcl 126 set ref 126* 686* 2221 uproc_attached 30(05) based bit(1) level 3 packed packed unaligned dcl 6-20 set ref 397 407 449* 644* 654* 2221 uproc_required_for_setup 000155 automatic bit(1) initial packed unaligned dcl 127 set ref 127* 489* 684* 2221 user_auth_string 000177 automatic char(32) packed unaligned dcl 130 set ref 416* 420* user_process 5 based bit(36) level 2 dcl 23-12 set ref 1606* v1_echo_neg_data based structure level 1 dcl 17-42 value based fixed bin(8,0) array level 2 in structure "cv_trans" packed packed unaligned dcl 2-62 in procedure "tty_index" ref 1975 2282 2308 value 2 based fixed bin(8,0) array level 3 in structure "cv_trans_struc" packed packed unaligned dcl 2-107 in procedure "tty_index" set ref 1975* var_tab 3 based float bin(27) level 2 dcl 2-66 ref 2028 2028 2075 version based fixed bin(17,0) level 2 in structure "terminal_info" dcl 13-6 in procedure "tty_index" ref 736 version based fixed bin(17,0) level 2 in structure "terminal_type_data" dcl 12-15 in procedure "tty_index" ref 888 888 951 version based fixed bin(17,0) level 2 in structure "delay_struc" dcl 2-112 in procedure "tty_index" ref 1488 1816 version based fixed bin(17,0) level 2 in structure "echo_neg_data" dcl 17-22 in procedure "tty_index" ref 1434 1436 1570 1583 version based fixed bin(17,0) level 2 in structure "tty_channel_meters" dcl 23-12 in procedure "tty_index" ref 1602 version based fixed bin(17,0) level 2 in structure "editing_chars" dcl 248 in procedure "tty_index" ref 1276 1276 1297 1297 version based fixed bin(17,0) level 2 in structure "special_chars_struc" dcl 2-76 in procedure "tty_index" set ref 1542* 1822 1822 1853 version based fixed bin(17,0) level 2 in structure "sp_info" dcl 20-9 in procedure "tty_index" ref 1657 version based bit(2) level 2 in structure "net_event_message" packed packed unaligned dcl 11-22 in procedure "tty_index" set ref 772* version based char(8) level 2 in structure "get_special_info" dcl 256 in procedure "tty_index" ref 1511 version based fixed bin(17,0) level 2 in structure "cv_trans_struc" dcl 2-107 in procedure "tty_index" ref 1827 1914 1970 1972 1974 version based fixed bin(17,0) level 2 in structure "swt_info" dcl 19-9 in procedure "tty_index" ref 1618 version based fixed bin(17,0) level 2 in structure "special_chars_struc_old" dcl 312 in procedure "tty_index" set ref 1528* vert_nl based fixed bin(17,0) level 2 dcl 2-66 ref 2028 2072 vt_ff 5 based fixed bin(17,0) level 2 dcl 2-66 ref 2028 2028 2077 vt_seq 4 based structure level 2 in structure "special_chars_old" dcl 282 in procedure "tty_index" set ref 2366 2437 vt_seq 20 based structure level 2 in structure "special_chars" dcl 2-26 in procedure "tty_index" set ref 2366 2437 wake_map 000530 automatic bit(1) array level 2 in structure "temp_table" packed packed unaligned dcl 2271 in procedure "translate_wakeup_table" set ref 2282* wake_map 000211 automatic bit(1) array level 2 in structure "new_waketab" packed packed unaligned dcl 136 in procedure "tty_index" set ref 2280 wake_map 000546 automatic bit(1) array level 2 in structure "temp_table" packed packed unaligned dcl 2297 in procedure "untranslate_wakeup_table" set ref 2309* wake_map 000215 automatic bit(1) array level 2 in structure "old_waketab" packed packed unaligned dcl 137 in procedure "tty_index" set ref 2306 wake_tbl 17(23) based bit(1) level 3 packed packed unaligned dcl 6-20 set ref 1620 waketp 21(18) based bit(18) level 2 packed packed unaligned dcl 5-22 set ref 1623 1626 1635 1637 1637 1638* 1642 1647* wakeup_table based structure level 1 dcl 19-16 set ref 1627 1650* wakeup_tablep 000324 automatic pointer dcl 19-14 set ref 1626* 1627 1644* 1645 1647 1650 wflag 13(12) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 666* 845* white_space 000020 constant char(6) initial packed unaligned dcl 167 ref 1279 wr_stat based structure level 1 dcl 238 write_first 16 based fixed bin(17,0) level 2 packed packed unaligned dcl 5-22 set ref 573 575 575 576* 831 write_last 16(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 5-22 set ref 576* wrt_lchar 21(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 6-20 set ref 1751* wru 13(14) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 1049* wtcb based structure level 1 dcl 5-22 set ref 513 513 527* 549 549 wtcbp 000274 automatic pointer dcl 5-20 set ref 384* 385 386 389 393 395 397 397 435 437 439 446 448 452 452 453 453 454 472 472 475 477 477 513 513 513* 515 527 528 529 532 543* 544 549 549 549* 551 568 573 575 575 576 576 578 580 581 587 589 589 590 591 591 593 640 642 643 650 652 652 657 659 661 666 666 666 694 701* 707 708 715 728 738 742 743 748 749 750 761 764 769 776 776 782 785 791 793 794 798 798 802 802 806 806 806 809 815 817 823 825 826 831 845 859 873 937 940 1008* 1024 1029 1032 1035 1041 1043 1044 1049 1049 1053 1056 1059 1065 1067 1068 1078 1093 1101 1109 1119 1129 1132 1137 1141 1143 1146 1152 1154 1155 1162 1163 1164 1166 1174 1176 1178 1180 1182 1184 1186 1188 1190 1191 1192 1193 1200 1202 1204 1205 1206 1213 1215 1221 1223 1224 1239 1240 1242 1243 1255 1258 1265 1267 1274 1293 1304 1321 1338 1441 1444 1447 1486 1499 1561 1564 1605 1606 1623 1626 1635 1637 1637 1638 1642 1647 1672 1673 1679 1722* 1757 1799 1962 2003* 2049* 2050 2051 2089* 2090 2091 2199* 2200 2201 2204 2206 2208 2214 2217 2221 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BEEP internal static fixed bin(17,0) initial dcl 25-7 Block_xfer internal static fixed bin(8,0) initial dcl 10-89 Break internal static fixed bin(8,0) initial dcl 10-89 Breakall internal static fixed bin(8,0) initial dcl 10-89 Breakchar internal static fixed bin(8,0) initial dcl 10-89 CRASH internal static fixed bin(17,0) initial dcl 25-7 Chngstring internal static fixed bin(8,0) initial dcl 10-89 Crecho internal static fixed bin(8,0) initial dcl 10-89 DSA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 11-83 DSA_DATA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 11-84 DSA_DATA_INPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 11-100 DSA_DATA_OUTPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 11-101 DSA_DEMAND_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 11-85 DSA_DEMAND_TURN_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 11-87 DSA_DEMAND_TURN_MSG internal static fixed bin(8,0) initial unsigned dcl 11-86 DSA_ESTABLISHMENT_MSG internal static fixed bin(8,0) initial unsigned dcl 11-97 DSA_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 11-103 DSA_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 11-35 DSA_PURGE_MSG internal static fixed bin(8,0) initial unsigned dcl 11-88 DSA_RECOVER_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 11-90 DSA_RECOVER_MSG internal static fixed bin(8,0) initial unsigned dcl 11-89 DSA_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 11-91 DSA_RESUME_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 11-93 DSA_RESUME_MSG internal static fixed bin(8,0) initial unsigned dcl 11-92 DSA_SUSPEND_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 11-95 DSA_SUSPEND_MSG internal static fixed bin(8,0) initial unsigned dcl 11-94 DSA_TERMINATED_MSG internal static fixed bin(8,0) initial unsigned dcl 11-98 DSA_TERM_ABNORMAL_MSG internal static fixed bin(8,0) initial unsigned dcl 11-96 DSA_UNSPECIFIED_MSG internal static fixed bin(8,0) initial unsigned dcl 11-82 DSA_USER_UNASSIGN_MSG internal static fixed bin(8,0) initial unsigned dcl 11-99 Dumpinput internal static fixed bin(8,0) initial dcl 10-89 Dumpoutput internal static fixed bin(8,0) initial dcl 10-89 ECHO_NEG_BREAK_TABLE_SIZE internal static fixed bin(17,0) initial dcl 17-19 Echoplex internal static fixed bin(8,0) initial dcl 10-89 Eight_bit_in internal static fixed bin(8,0) initial dcl 10-89 Eight_bit_out internal static fixed bin(8,0) initial dcl 10-89 Errormsg internal static fixed bin(8,0) initial dcl 10-89 FNP_DUMP_PATCH_EVENT internal static fixed bin(17,0) initial dcl 3-31 FNP_METER_EVENT internal static fixed bin(17,0) initial dcl 3-32 Fullduplex internal static fixed bin(8,0) initial dcl 10-89 GET_COMM_METERS_INFO_VERSION_1 internal static fixed bin(17,0) initial dcl 22-21 HASP_MPX internal static fixed bin(17,0) initial dcl 26-16 Hndlquit internal static fixed bin(8,0) initial dcl 10-89 IBM3270_MPX internal static fixed bin(17,0) initial dcl 26-16 INPUT_CONVERT_BREAK internal static fixed bin(8,0) initial packed unaligned dcl 2-135 INPUT_CONVERT_DISCARD internal static fixed bin(8,0) initial packed unaligned dcl 2-135 INPUT_CONVERT_DSA_CR_PROCESSING internal static fixed bin(8,0) initial packed unaligned dcl 2-135 INPUT_CONVERT_ESCAPE internal static fixed bin(8,0) initial packed unaligned dcl 2-135 INPUT_CONVERT_FORMFEED internal static fixed bin(8,0) initial packed unaligned dcl 2-135 INPUT_CONVERT_ORDINARY internal static fixed bin(8,0) initial packed unaligned dcl 2-135 INPUT_CONVERT_PRECEDENCE_DISCARD internal static fixed bin(8,0) initial packed unaligned dcl 2-135 Input_flow_control internal static fixed bin(8,0) initial dcl 10-89 JUST_LOG internal static fixed bin(17,0) initial dcl 25-7 LAP_MPX internal static fixed bin(17,0) initial dcl 26-16 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 16-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 16-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 16-22 LINE_BSC internal static fixed bin(17,0) initial dcl 16-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 16-22 LINE_DSA internal static fixed bin(17,0) initial dcl 16-22 LINE_G115 internal static fixed bin(17,0) initial dcl 16-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 16-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 16-22 LINE_MC internal static fixed bin(17,0) initial dcl 16-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 16-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 16-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 16-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 16-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 16-22 LINE_TELNET internal static fixed bin(17,0) initial dcl 16-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 16-22 LINE_VIP internal static fixed bin(17,0) initial dcl 16-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 16-22 LOG internal static fixed bin(17,0) initial dcl 25-7 Lfecho internal static fixed bin(8,0) initial dcl 10-89 Listen internal static fixed bin(8,0) initial dcl 10-89 Lock internal static fixed bin(8,0) initial dcl 10-89 MAX_DSA_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 11-80 MAX_MCS_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 11-46 MCS_DIALOUT_MSG internal static fixed bin(17,0) initial dcl 11-54 MCS_DIALUP_MSG internal static fixed bin(17,0) initial dcl 11-50 MCS_HANGUP_MSG internal static fixed bin(17,0) initial dcl 11-52 MCS_LINE_STATUS_MSG internal static fixed bin(17,0) initial dcl 11-62 MCS_MASKED_MSG internal static fixed bin(17,0) initial dcl 11-64 MCS_MPX internal static fixed bin(17,0) initial dcl 26-16 MCS_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 11-67 MCS_QUIT_MSG internal static fixed bin(17,0) initial dcl 11-56 MCS_READ_MSG internal static fixed bin(17,0) initial dcl 11-58 MCS_WRITE_MSG internal static fixed bin(17,0) initial dcl 11-60 MOWSE_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 11-36 Meter internal static fixed bin(8,0) initial dcl 10-89 Msg internal static fixed bin(8,0) initial dcl 10-89 NETWORK_TYPE_VALUES internal static varying char(8) initial array dcl 11-38 Nocontrol internal static fixed bin(8,0) initial dcl 10-89 OUTPUT_CONVERT_BRS internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_BS internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_CR internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_DONT_SEND internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_FF internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_FIRST_SPECIAL internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_HT internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_NEWLINE internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_NOT_USED_13 internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_NOT_USED_14 internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_NOT_USED_15 internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_NOT_USED_16 internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_NO_MOTION internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_OCTAL internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_ORDINARY internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_PRECEDENCE_NO_MOTION internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_RRS internal static fixed bin(8,0) initial packed unaligned dcl 2-147 OUTPUT_CONVERT_VT internal static fixed bin(8,0) initial packed unaligned dcl 2-147 Odd_parity internal static fixed bin(8,0) initial dcl 10-89 Output_flow_control internal static fixed bin(8,0) initial dcl 10-89 PROTOCOL_MPX internal static fixed bin(17,0) initial dcl 26-16 Polite internal static fixed bin(8,0) initial dcl 10-89 Prefixnl internal static fixed bin(8,0) initial dcl 10-89 Replay internal static fixed bin(8,0) initial dcl 10-89 STY_MPX internal static fixed bin(17,0) initial dcl 26-16 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 25-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 25-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 25-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 25-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 25-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 25-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 25-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 25-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 25-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 25-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 25-7 SYSTEM1_MPX internal static fixed bin(17,0) initial dcl 26-16 SYSTEM2_MPX internal static fixed bin(17,0) initial dcl 26-16 Sensepos internal static fixed bin(8,0) initial dcl 10-89 Set_buffer_size internal static fixed bin(8,0) initial dcl 10-89 Setbusy internal static fixed bin(8,0) initial dcl 10-89 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 25-7 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 3-33 TTY_MPX internal static fixed bin(17,0) initial dcl 26-16 Tabecho internal static fixed bin(8,0) initial dcl 10-89 USER1_MPX internal static fixed bin(17,0) initial dcl 26-16 USER2_MPX internal static fixed bin(17,0) initial dcl 26-16 USER3_MPX internal static fixed bin(17,0) initial dcl 26-16 USER4_MPX internal static fixed bin(17,0) initial dcl 26-16 USER5_MPX internal static fixed bin(17,0) initial dcl 26-16 Upstate internal static fixed bin(8,0) initial dcl 10-89 VIP7760_MPX internal static fixed bin(17,0) initial dcl 26-16 WIRED_ECHO_BREAK_SIZE internal static fixed bin(17,0) initial dcl 18-16 WORDS_IN_ECHO_BREAK_TABLE internal static fixed bin(17,0) initial dcl 18-17 Wru internal static fixed bin(8,0) initial dcl 10-89 X25_MPX internal static fixed bin(17,0) initial dcl 26-16 Xmit_hold internal static fixed bin(8,0) initial dcl 10-89 abs_buf_limit internal static fixed bin(18,0) initial dcl 3-19 accept_calls internal static fixed bin(8,0) initial dcl 10-24 accept_direct_input internal static fixed bin(8,0) initial dcl 10-65 accept_direct_output internal static fixed bin(8,0) initial dcl 10-24 accept_last_output internal static fixed bin(8,0) initial dcl 10-24 accept_new_terminal internal static fixed bin(8,0) initial dcl 10-65 ack_echnego_init internal static fixed bin(8,0) initial dcl 10-65 ack_echnego_stop internal static fixed bin(8,0) initial dcl 10-65 alter_parameters internal static fixed bin(8,0) initial dcl 10-24 blast internal static fixed bin(8,0) initial dcl 10-24 blockp automatic pointer dcl 7-19 break_acknowledged internal static fixed bin(8,0) initial dcl 10-24 break_condition internal static fixed bin(8,0) initial dcl 10-65 bsizec internal static fixed bin(17,0) initial dcl 3-28 buf_per_second internal static fixed bin(17,0) initial dcl 3-29 buffer based structure level 1 dcl 7-28 c_chars_ptr automatic pointer dcl 2-53 channel_manager$check_modes 000000 constant entry external dcl 15-19 channel_manager$get_modes 000000 constant entry external dcl 15-22 channel_manager$interrupt 000000 constant entry external dcl 15-25 channel_manager$interrupt_later 000000 constant entry external dcl 15-28 channel_manager$queued_interrupt 000000 constant entry external dcl 15-31 channel_manager$read 000000 constant entry external dcl 15-7 channel_manager$set_modes 000000 constant entry external dcl 15-16 channel_manager$write 000000 constant entry external dcl 15-10 checksum_error internal static fixed bin(8,0) initial dcl 10-24 connect_to_slave internal static fixed bin(8,0) initial dcl 10-65 dial internal static fixed bin(8,0) initial dcl 10-24 disconnect_accepted internal static fixed bin(8,0) initial dcl 10-24 disconnect_all_lines internal static fixed bin(8,0) initial dcl 10-24 disconnect_this_line internal static fixed bin(8,0) initial dcl 10-24 disconnected_line internal static fixed bin(8,0) initial dcl 10-65 dont_accept_calls internal static fixed bin(8,0) initial dcl 10-24 dump_mem internal static fixed bin(8,0) initial dcl 10-24 enter_receive internal static fixed bin(8,0) initial dcl 10-24 error_message internal static fixed bin(8,0) initial dcl 10-65 first_acu_op_code internal static fixed bin(8,0) initial dcl 10-65 fnp_break internal static fixed bin(8,0) initial dcl 10-24 free_block based structure level 1 dcl 7-23 free_blockp automatic pointer dcl 7-20 get_special_info_struc based structure level 1 dcl 2-117 global_opcodes internal static fixed bin(8,0) initial array dcl 10-126 hcs_$echo_negotiate_get_chars 000000 constant entry external dcl 17-59 hcs_$tty_read_echoed 000000 constant entry external dcl 17-59 init_complete internal static fixed bin(8,0) initial dcl 10-24 init_echo_negotiation internal static fixed bin(8,0) initial dcl 10-24 input_accepted internal static fixed bin(8,0) initial dcl 10-24 input_bpart internal static fixed bin(18,0) initial dcl 3-19 input_fc_chars internal static fixed bin(8,0) initial dcl 10-24 input_in_mailbox internal static fixed bin(8,0) initial dcl 10-65 last_acu_op_code internal static fixed bin(8,0) initial dcl 10-65 lct_size automatic fixed bin(17,0) dcl 8-9 line_control internal static fixed bin(8,0) initial dcl 10-24 line_masked internal static fixed bin(8,0) initial dcl 10-65 line_status internal static fixed bin(8,0) initial dcl 10-65 line_types internal static char(16) initial array packed unaligned dcl 16-54 lock_ptr automatic pointer dcl 4-9 logical_chan_meters based structure level 1 dcl 22-17 max_buffer_tally internal static fixed bin(17,0) initial array dcl 7-43 mpx_special_lock internal static bit(1) initial array packed unaligned dcl 26-40 mpx_types internal static char(32) initial array packed unaligned dcl 26-35 output_bpart internal static fixed bin(18,0) initial dcl 3-19 output_fc_chars internal static fixed bin(8,0) initial dcl 10-24 patch_mem internal static fixed bin(8,0) initial dcl 10-24 qblock_size internal static fixed bin(17,0) initial dcl 3-27 rcd internal static fixed bin(8,0) initial dcl 10-14 reject_request_temp internal static fixed bin(8,0) initial dcl 10-24 report_meters internal static fixed bin(8,0) initial dcl 10-24 rtx internal static fixed bin(8,0) initial dcl 10-14 s6180_params internal static fixed bin(8,0) initial dcl 10-65 saved_meters based structure level 1 dcl 8-68 send_output internal static fixed bin(8,0) initial dcl 10-65 set_delay_table internal static fixed bin(8,0) initial dcl 10-24 set_echnego_break_table internal static fixed bin(8,0) initial dcl 10-24 set_framing_chars internal static fixed bin(8,0) initial dcl 10-24 set_line_type internal static fixed bin(8,0) initial dcl 10-24 start_negotiated_echo internal static fixed bin(8,0) initial dcl 10-24 stop_negotiated_echo internal static fixed bin(8,0) initial dcl 10-24 sync_msg_size internal static fixed bin(8,0) initial dcl 10-24 table_alloc_len automatic fixed bin(17,0) dcl 9-30 table_descriptor based structure level 1 dcl 9-20 tdp automatic pointer dcl 9-29 terminal_accepted internal static fixed bin(8,0) initial dcl 10-24 tty_ev internal static fixed bin(17,0) initial dcl 3-19 tty_space_man$free_buffer 000000 constant entry external dcl 14-14 tty_space_man$get_buffer 000000 constant entry external dcl 14-13 tty_space_man$get_chain 000000 constant entry external dcl 14-15 tty_space_man$get_perm_space 000000 constant entry external dcl 14-11 tty_space_man$needs_space 000000 constant entry external dcl 14-18 tty_space_man$switch_chain 000000 constant entry external dcl 14-17 tty_tables_hdr based structure level 1 dcl 9-8 wcd internal static fixed bin(8,0) initial dcl 10-14 wru_timeout internal static fixed bin(8,0) initial dcl 10-65 wtx internal static fixed bin(8,0) initial dcl 10-14 NAMES DECLARED BY EXPLICIT CONTEXT. add_table 010040 constant entry internal dcl 1806 ref 895 alter_mode 010646 constant entry internal dcl 1982 ref 862 866 876 880 attach 000727 constant label dcl 373 ref 354 bad_data 010233 constant label dcl 1867 bad_ofc 005675 constant label dcl 1364 ref 1340 1346 bad_special_size 012173 constant label dcl 2346 ref 2352 2356 2360 2364 2368 2372 2377 2382 2387 2392 2400 cant_do 007466 constant label dcl 1703 ref 1620 cleaner 011742 constant entry internal dcl 2258 ref 373 467 564 612 633 683 copy_from_old_special_table 012453 constant entry internal dcl 2418 ref 1906 copy_to_old_special_table 012163 constant entry internal dcl 2335 ref 1532 detcom 002333 constant label dcl 631 ref 624 eret 001363 constant label dcl 475 ref 455 error 007462 constant label dcl 1699 ref 728 769 782 815 859 873 1024 1029 1032 1053 1056 1078 1093 1101 1109 1117 1119 1121 1124 1139 1141 1143 1174 1200 1213 1274 1293 1304 1321 1338 1486 1499 1799 1962 forward_order 010732 constant entry internal dcl 2011 ref 706 723 1048 1072 1087 1104 1112 1128 1228 1312 1332 1378 1612 1684 get_devx 011622 constant entry internal dcl 2237 ref 349 364 get_table 010566 constant entry internal dcl 1954 ref 1547 1550 1553 1556 illdet 007621 constant label dcl 2228 ref 640 657 1137 2196 2225 index_invalid 001173 constant label dcl 430 ref 381 391 397 423 init_channel 001501 constant entry external dcl 499 init_tcb 007636 constant entry internal dcl 1731 ref 386 531 1724 2201 init_tcb_tables 007715 constant entry internal dcl 1763 ref 546 1736 initialize_tcb 007506 constant entry external dcl 1718 is_parent_mpx 012117 constant entry internal dcl 2318 ref 802 join 010051 constant label dcl 1812 ref 1803 new_proc 002314 constant entry external dcl 626 no_allocate 007472 constant label dcl 1708 set ref 1515 1516 1645 no_print_off 011167 constant label dcl 2108 ref 2120 2123 no_print_on 011331 constant label dcl 2148 ref 2160 2164 printer_on_off 007561 constant entry external dcl 2086 replace_table 010017 constant entry internal dcl 1784 ref 1405 1410 1413 1416 1419 1422 ret 007632 constant label dcl 2232 ref 2187 2191 send_delay_table 011044 constant entry internal dcl 2059 ref 920 1406 2053 send_delays 007530 constant entry external dcl 2046 setup 011466 constant entry internal dcl 2177 ref 468 490 565 613 634 690 tcb_not_done 001656 constant label dcl 535 ref 521 522 terminate_channel 001666 constant entry external dcl 539 translate_wakeup_table 011761 constant entry internal dcl 2268 ref 1649 tty_abort 001754 constant entry external dcl 559 tty_attach 000607 constant entry external dcl 356 tty_detach 002270 constant entry external dcl 618 tty_event 001301 constant entry external dcl 461 tty_get_name 001407 constant entry external dcl 485 tty_index 000525 constant entry external dcl 90 tty_order 002520 constant entry external dcl 674 ref 369 tty_state 002210 constant entry external dcl 607 turn_printer_off 011161 constant entry internal dcl 2101 ref 864 2095 turn_printer_on 011323 constant entry internal dcl 2141 ref 878 2093 unlock 007446 constant label dcl 1693 ref 698 718 788 795 820 827 905 1038 1045 1062 1069 1084 1149 1156 1218 1225 1236 1252 1262 1366 1504 1537 1664 1669 1682 1690 1701 1705 1710 1714 2015 untranslate_wakeup_table 012044 constant entry internal dcl 2294 ref 1628 validate_delay_table 010763 constant entry internal dcl 2022 ref 1929 wrong_version 010067 constant label dcl 1818 in procedure "replace_table" ref 1822 1827 wrong_version 007476 constant label dcl 1712 in procedure "tty_index" ref 736 888 1276 1297 1436 1488 1583 1602 1618 1657 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 14216 14374 13154 14226 Length 15544 13154 156 1133 1041 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tty_index 623 external procedure is an external procedure. on unit on line 373 64 on unit on unit on line 467 64 on unit on unit on line 521 64 on unit on unit on line 522 64 on unit on unit on line 564 64 on unit on unit on line 612 64 on unit on unit on line 633 64 on unit on unit on line 683 64 on unit on unit on line 1515 64 on unit on unit on line 1516 64 on unit init_tcb internal procedure shares stack frame of external procedure tty_index. init_tcb_tables internal procedure shares stack frame of external procedure tty_index. replace_table internal procedure shares stack frame of external procedure tty_index. begin block on line 1872 108 begin block uses auto adjustable storage. get_table internal procedure shares stack frame of external procedure tty_index. alter_mode internal procedure shares stack frame of external procedure tty_index. forward_order internal procedure shares stack frame of external procedure tty_index. validate_delay_table internal procedure shares stack frame of external procedure tty_index. send_delay_table internal procedure shares stack frame of external procedure tty_index. turn_printer_off internal procedure shares stack frame of external procedure tty_index. turn_printer_on internal procedure shares stack frame of external procedure tty_index. setup internal procedure shares stack frame of external procedure tty_index. get_devx internal procedure shares stack frame of external procedure tty_index. cleaner 68 internal procedure is called by several nonquick procedures. translate_wakeup_table internal procedure shares stack frame of external procedure tty_index. untranslate_wakeup_table internal procedure shares stack frame of external procedure tty_index. is_parent_mpx internal procedure shares stack frame of external procedure tty_index. copy_to_old_special_table internal procedure shares stack frame of external procedure tty_index. copy_from_old_special_table internal procedure shares stack frame of begin block on line 1872. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 ever_initialized tty_index STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 1872 000100 scs begin block on line 1872 tty_index 000100 name tty_index 000110 event tty_index 000112 order tty_index 000122 argptr tty_index 000124 special_ptr tty_index 000126 esw tty_index 000136 i tty_index 000137 j tty_index 000140 devx tty_index 000141 sw tty_index 000142 rawom tty_index 000143 rw_switch tty_index 000144 code tty_index 000146 temp_ptr tty_index 000150 table_type tty_index 000151 locked tty_index 000152 sus_count tty_index 000153 res_count tty_index 000154 uproc_attach_required_for_setup tty_index 000155 uproc_required_for_setup tty_index 000156 phone_data tty_index 000167 aim_attributes_string tty_index 000177 user_auth_string tty_index 000207 echo_version_1 tty_index 000210 old_special_table_version tty_index 000211 new_waketab tty_index 000215 old_waketab tty_index 000221 sfc tty_index 000222 auto_ifc tty_index 000225 auto_ofc tty_index 000230 l_tty_access_class tty_index 000233 auto_mode tty_index 000236 new_tablerp tty_index 000242 trpp tty_index 000244 dftrpp tty_index 000246 ntpp tty_index 000264 special_chars_old_ptr tty_index 000266 pflag tty_index 000267 sc_escape_len tty_index 000270 sc_input_escape_len tty_index 000272 ttybp tty_index 000274 wtcbp tty_index 000276 tcbp tty_index 000300 lctp tty_index 000302 lctep tty_index 000304 lcntp tty_index 000306 ttytp tty_index 000310 net_event_message_arg tty_index 000312 ttdp tty_index 000314 terminal_info_ptr tty_index 000316 echo_neg_datap tty_index 000320 echo_datap tty_index 000322 swt_infop tty_index 000324 wakeup_tablep tty_index 000326 sp_infop tty_index 000330 tty_meterp tty_index 000332 tty_access_class_ptr tty_index 000362 save_breakall_enabled init_tcb 000400 new_tablerp replace_table 000402 tablep replace_table 000404 table_size replace_table 000405 replace_sw replace_table 000416 tablep get_table 000430 modes_info alter_mode 000460 code send_delay_table 000461 fnp_delays send_delay_table 000464 dp send_delay_table 000530 temp_table translate_wakeup_table 000534 i translate_wakeup_table 000535 j translate_wakeup_table 000536 p translate_wakeup_table 000546 temp_table untranslate_wakeup_table 000552 i untranslate_wakeup_table 000554 p untranslate_wakeup_table 000564 temp_lctep is_parent_mpx THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_ne_as r_le_a set_stack alloc_char_temp enter_begin_block leave_begin_block call_ext_in_desc call_ext_out_desc call_ext_out call_int_other return_mac fl2_to_fx1 tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry ext_entry_desc int_entry op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$equal channel_manager$control compare_tty_name_ display_access_class_ pxss$ring_0_wakeup syserr tty_area_manager$allocate tty_area_manager$free tty_interrupt$set_static tty_lock$lock_channel tty_lock$unlock_channel tty_modes tty_modes$mpx_only tty_space_man$free_chain tty_space_man$free_space tty_space_man$get_space tty_tables_mgr$add tty_tables_mgr$delete tty_write$locked THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bigarg error_table_$buffer_big error_table_$device_not_usable error_table_$improper_data_format error_table_$inconsistent error_table_$invalid_array_size error_table_$invalid_delay_value error_table_$invalid_device error_table_$invalid_state error_table_$io_no_permission error_table_$line_status_pending error_table_$masked_channel error_table_$no_connection error_table_$no_line_status error_table_$no_operation error_table_$no_table error_table_$no_wired_structure error_table_$notalloc error_table_$null_info_ptr error_table_$request_pending error_table_$resource_attached error_table_$smallarg error_table_$undefined_order_request error_table_$unimplemented_version pds$access_authorization pds$process_group_id pds$processid tc_data$initializer_id tty_buf$ tty_tables$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 123 000512 126 000513 127 000515 90 000520 344 000547 345 000550 346 000553 347 000555 348 000565 349 000567 350 000572 352 000574 353 000576 354 000601 356 000602 358 000631 359 000634 360 000636 361 000641 362 000643 363 000653 364 000655 365 000660 367 000662 368 000664 369 000667 370 000722 373 000727 375 000751 376 000762 378 000764 380 000766 381 000773 384 000776 385 001000 386 001002 389 001006 391 001011 393 001015 394 001016 395 001017 397 001023 402 001042 403 001044 404 001052 407 001053 409 001055 412 001101 416 001106 418 001122 420 001133 423 001171 427 001172 430 001173 432 001176 433 001204 435 001205 437 001216 439 001224 441 001232 443 001234 444 001235 446 001237 448 001241 449 001244 452 001247 453 001253 454 001257 455 001261 457 001264 459 001273 461 001274 464 001316 465 001321 467 001322 468 001344 469 001352 472 001354 475 001363 477 001365 481 001373 483 001401 485 001402 488 001431 489 001433 490 001434 491 001442 494 001444 495 001447 496 001464 497 001473 499 001474 502 001520 503 001522 504 001525 505 001527 507 001530 509 001533 510 001537 513 001542 515 001554 517 001560 518 001563 521 001564 522 001603 523 001622 524 001635 525 001636 527 001637 528 001643 529 001645 530 001647 531 001652 532 001653 533 001655 535 001656 537 001661 539 001662 542 001701 543 001702 544 001705 546 001707 547 001710 549 001723 551 001736 553 001742 554 001745 557 001746 559 001747 562 001771 564 001772 565 002014 566 002022 568 002024 570 002030 571 002036 573 002041 575 002044 576 002062 578 002067 580 002072 581 002074 585 002076 587 002101 589 002104 590 002122 591 002125 593 002131 596 002133 597 002164 600 002172 603 002174 605 002203 607 002204 610 002225 612 002226 613 002250 614 002256 616 002265 618 002266 623 002305 624 002306 626 002307 629 002331 631 002333 633 002334 634 002356 635 002364 638 002366 640 002370 642 002375 643 002377 644 002404 647 002407 648 002410 650 002413 652 002417 654 002424 656 002427 657 002430 659 002435 660 002437 661 002467 662 002471 666 002473 669 002503 671 002512 674 002513 678 002545 679 002553 681 002556 683 002561 684 002603 686 002611 690 002616 691 002624 694 002626 697 002650 698 002653 701 002654 704 002674 706 002700 707 002701 708 002704 710 002712 711 002714 713 002715 715 002721 717 002725 718 002727 721 002730 722 002734 723 002736 724 002737 726 002740 728 002744 730 002747 731 002753 733 002754 735 002760 736 002762 738 002765 740 002774 741 003000 742 003005 743 003010 744 003013 746 003014 748 003020 749 003023 750 003025 752 003030 753 003032 754 003033 756 003034 757 003037 759 003043 761 003044 764 003053 767 003062 769 003066 771 003071 772 003073 773 003077 774 003103 775 003105 776 003111 778 003127 780 003130 782 003134 785 003137 787 003142 788 003145 791 003146 793 003150 794 003151 795 003152 798 003153 801 003165 802 003167 804 003210 805 003215 806 003217 807 003254 809 003262 811 003265 813 003266 815 003272 817 003275 819 003300 820 003303 823 003304 825 003306 826 003307 827 003310 830 003311 831 003312 834 003321 835 003353 839 003360 840 003361 842 003363 845 003365 848 003375 851 003376 854 003406 857 003416 859 003422 862 003425 864 003441 866 003447 869 003464 871 003465 873 003471 876 003474 878 003510 880 003516 883 003533 885 003534 887 003540 888 003542 891 003547 892 003563 893 003566 894 003567 895 003577 896 003623 898 003625 900 003627 901 003642 903 003662 904 003664 905 003666 908 003667 909 003672 910 003675 911 003703 913 003725 915 003754 917 003762 918 003766 920 003770 923 003775 924 004001 925 004004 926 004006 928 004010 929 004013 930 004016 932 004021 933 004023 934 004025 937 004057 939 004067 940 004072 944 004110 945 004115 951 004151 954 004154 956 004163 957 004166 958 004171 961 004201 962 004203 965 004206 966 004210 967 004212 968 004216 969 004250 971 004251 973 004255 974 004257 975 004260 976 004261 977 004262 980 004314 982 004321 983 004324 984 004325 985 004330 987 004333 988 004335 989 004337 990 004354 991 004363 992 004365 993 004367 994 004371 995 004423 997 004424 999 004433 1000 004435 1001 004436 1002 004440 1004 004442 1006 004445 1007 004447 1008 004451 1011 004467 1012 004471 1013 004473 1014 004475 1015 004477 1016 004501 1017 004502 1020 004534 1022 004535 1024 004541 1026 004544 1027 004551 1029 004552 1032 004562 1035 004565 1037 004570 1038 004572 1041 004573 1043 004575 1044 004576 1045 004577 1048 004600 1049 004601 1050 004606 1053 004607 1056 004617 1059 004622 1061 004625 1062 004630 1065 004631 1067 004633 1068 004634 1069 004635 1072 004636 1073 004637 1076 004640 1078 004644 1081 004647 1083 004652 1084 004655 1087 004656 1088 004657 1089 004662 1091 004663 1093 004667 1095 004672 1097 004675 1099 004676 1101 004702 1104 004706 1105 004707 1107 004710 1109 004714 1112 004720 1113 004721 1115 004722 1117 004726 1119 004732 1121 004735 1124 004741 1128 004751 1129 004752 1130 004755 1131 004771 1132 004773 1133 005003 1135 005004 1137 005010 1139 005014 1141 005020 1143 005023 1146 005026 1148 005031 1149 005033 1152 005034 1154 005036 1155 005037 1156 005040 1159 005041 1162 005047 1163 005051 1164 005053 1165 005055 1166 005103 1170 005110 1172 005111 1174 005115 1176 005120 1178 005123 1180 005132 1182 005140 1184 005146 1186 005154 1188 005162 1190 005170 1191 005171 1192 005173 1193 005175 1194 005177 1195 005200 1196 005203 1198 005204 1200 005210 1202 005213 1204 005216 1205 005222 1206 005225 1207 005227 1208 005230 1209 005233 1211 005234 1213 005240 1215 005243 1217 005246 1218 005251 1221 005252 1223 005254 1224 005255 1225 005256 1228 005257 1229 005260 1231 005261 1233 005265 1235 005271 1236 005274 1239 005275 1240 005307 1242 005312 1243 005314 1245 005317 1247 005320 1249 005324 1251 005330 1252 005333 1255 005334 1256 005345 1258 005346 1261 005356 1262 005360 1265 005361 1267 005363 1268 005365 1270 005367 1272 005370 1274 005374 1276 005377 1279 005404 1284 005433 1287 005440 1291 005450 1293 005451 1297 005460 1299 005465 1300 005471 1302 005472 1304 005476 1307 005501 1312 005516 1313 005517 1314 005522 1317 005524 1319 005525 1321 005531 1323 005534 1330 005561 1331 005564 1332 005566 1334 005567 1336 005570 1338 005574 1340 005577 1343 005607 1344 005613 1346 005616 1353 005643 1355 005644 1358 005650 1364 005675 1366 005700 1368 005701 1370 005704 1373 005714 1374 005716 1376 005720 1378 005725 1379 005726 1381 005727 1383 005733 1384 005737 1385 005742 1387 005743 1389 005747 1390 005752 1391 005755 1393 005756 1395 005762 1396 005770 1398 006004 1399 006011 1400 006014 1401 006016 1403 006017 1405 006023 1406 006033 1408 006042 1410 006043 1413 006060 1416 006075 1419 006112 1422 006127 1425 006144 1427 006150 1433 006152 1434 006153 1436 006161 1441 006163 1443 006167 1444 006202 1446 006211 1447 006212 1448 006215 1451 006225 1456 006231 1458 006233 1459 006237 1460 006242 1461 006257 1462 006264 1463 006267 1464 006274 1465 006301 1471 006302 1472 006306 1473 006322 1474 006326 1475 006331 1476 006335 1480 006341 1482 006374 1484 006375 1486 006401 1488 006404 1491 006407 1494 006421 1495 006427 1497 006430 1499 006434 1501 006437 1503 006444 1504 006447 1507 006450 1508 006453 1509 006455 1511 006464 1513 006473 1515 006475 1516 006514 1518 006533 1520 006567 1522 006624 1523 006625 1525 006626 1527 006630 1528 006632 1532 006634 1533 006635 1535 006637 1536 006661 1537 006664 1539 006665 1541 006666 1542 006670 1543 006672 1545 006721 1547 006722 1550 006736 1553 006752 1556 006770 1559 007006 1561 007012 1564 007022 1565 007025 1570 007027 1572 007032 1574 007036 1575 007041 1576 007046 1577 007053 1578 007060 1579 007075 1583 007076 1585 007100 1587 007104 1588 007107 1589 007113 1590 007117 1591 007123 1595 007137 1597 007140 1599 007144 1600 007147 1602 007153 1604 007156 1605 007161 1606 007164 1607 007166 1608 007173 1609 007200 1610 007203 1612 007206 1613 007207 1615 007210 1617 007214 1618 007216 1620 007221 1623 007225 1626 007236 1627 007241 1628 007244 1629 007245 1632 007251 1633 007255 1635 007261 1637 007265 1638 007303 1640 007306 1642 007307 1644 007313 1645 007326 1647 007332 1649 007336 1650 007337 1652 007343 1654 007344 1656 007350 1657 007352 1660 007355 1661 007360 1663 007361 1664 007364 1666 007365 1668 007367 1669 007372 1672 007373 1673 007375 1675 007402 1677 007403 1679 007407 1681 007413 1682 007415 1684 007416 1685 007417 1688 007420 1690 007445 1693 007446 1696 007453 1697 007461 1699 007462 1701 007465 1703 007466 1705 007471 1708 007472 1710 007475 1712 007476 1714 007501 1718 007502 1722 007514 1723 007520 1724 007523 1725 007524 2046 007525 2049 007536 2050 007542 2051 007544 2052 007550 2053 007553 2054 007554 2086 007555 2089 007567 2090 007573 2091 007575 2092 007601 2093 007604 2095 007615 2096 007620 2228 007621 2230 007624 2232 007632 2235 007635 1731 007636 1736 007637 1738 007640 1739 007644 1740 007646 1741 007650 1742 007652 1743 007653 1744 007656 1745 007660 1746 007664 1747 007670 1748 007672 1749 007674 1750 007676 1751 007700 1752 007702 1753 007704 1754 007706 1755 007707 1756 007710 1757 007711 1759 007714 1763 007715 1766 007716 1767 007721 1768 007724 1769 007731 1771 007753 1772 007761 1774 010006 1775 010014 1776 010016 1784 010017 1798 010023 1799 010025 1801 010031 1802 010034 1803 010037 1806 010040 1809 010044 1810 010045 1812 010051 1816 010060 1818 010067 1820 010072 1822 010073 1827 010103 1830 010106 1832 010113 1835 010124 1838 010145 1840 010155 1842 010160 1845 010161 1848 010164 1851 010172 1853 010176 1855 010201 1856 010202 1857 010205 1858 010214 1860 010215 1861 010217 1862 010222 1865 010227 1867 010233 1869 010236 1872 010237 1876 010242 1898 010267 1899 010271 1901 010273 1902 010276 1904 010301 1906 010333 1907 010345 1908 010350 1909 010370 1910 010371 1912 010372 1914 010377 1916 010404 1918 010423 1921 010426 1923 010432 1924 010437 1925 010441 1926 010452 1927 010453 1929 010455 1930 010472 1932 010474 1933 010506 1938 010507 1941 010517 1944 010535 1947 010556 1949 010565 1954 010566 1962 010570 1965 010574 1969 010606 1970 010611 1972 010620 1974 010626 1975 010635 1976 010643 1978 010645 1982 010646 1993 010657 1995 010665 1996 010671 1997 010672 1999 010673 2000 010710 2003 010714 2005 010731 2011 010732 2014 010733 2015 010760 2018 010762 2022 010763 2028 010765 2034 011036 2035 011037 2037 011040 2039 011043 2059 011044 2068 011045 2071 011066 2072 011071 2073 011077 2074 011103 2075 011106 2076 011112 2077 011120 2080 011125 2082 011160 2101 011161 2106 011163 2108 011167 2110 011173 2113 011174 2114 011230 2116 011234 2118 011240 2120 011241 2122 011245 2123 011250 2125 011253 2126 011260 2128 011262 2130 011314 2132 011322 2141 011323 2146 011325 2148 011331 2150 011335 2153 011336 2154 011373 2156 011377 2158 011403 2160 011404 2163 011410 2164 011413 2166 011416 2167 011423 2169 011425 2171 011457 2173 011465 2177 011466 2181 011470 2182 011472 2183 011475 2184 011477 2186 011503 2187 011505 2190 011506 2191 011516 2193 011520 2195 011522 2196 011527 2199 011532 2200 011534 2201 011536 2204 011543 2206 011553 2208 011562 2210 011571 2212 011574 2214 011575 2217 011602 2221 011605 2225 011621 2237 011622 2242 011633 2243 011636 2244 011657 2245 011661 2248 011726 2250 011730 2252 011737 2253 011740 2258 011741 2261 011747 2264 011760 2268 011761 2275 011762 2277 011770 2278 011773 2279 011776 2280 012003 2282 012013 2284 012031 2285 012033 2287 012035 2288 012043 2294 012044 2301 012045 2303 012053 2304 012056 2305 012061 2306 012065 2308 012071 2309 012101 2312 012106 2314 012110 2315 012116 2318 012117 2324 012121 2326 012126 2327 012132 2329 012143 2330 012144 2332 012155 2335 012163 2342 012164 2344 012167 2346 012173 2348 012176 2350 012177 2352 012201 2354 012206 2356 012210 2358 012214 2360 012216 2362 012222 2364 012224 2366 012230 2368 012232 2370 012236 2372 012240 2374 012244 2377 012246 2379 012252 2382 012254 2384 012260 2387 012262 2389 012266 2392 012270 2394 012274 2397 012276 2399 012300 2400 012307 2403 012330 2406 012334 2408 012341 2410 012343 2411 012361 2413 012413 2414 012437 2416 012452 2418 012453 2428 012455 2429 012461 2431 012464 2433 012467 2435 012471 2437 012473 2439 012475 2441 012477 2444 012501 2447 012503 2450 012505 2453 012507 2456 012511 2458 012513 2459 012524 2461 012534 2463 012547 2465 012551 2466 012571 2468 012624 2469 012650 2471 012664 ----------------------------------------------------------- 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