COMPILATION LISTING OF SEGMENT tc_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx, AZ, Sys-M Compiled on: 09/09/87 1349.9 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 6* * * 7* *********************************************************** */ 8 9 /****^ HISTORY COMMENTS: 10* 1) change(86-05-30,LJAdams), approve(86-11-11,MCR7485), 11* audit(86-12-19,Margolin), install(87-01-06,MR12.0-1255): 12* Modified to support MOWSE. 13* 2) change(86-11-26,LJAdams), approve(86-11-26,MCR7584), 14* audit(86-12-19,Margolin), install(87-01-06,MR12.0-1255): 15* Initial DSA coding has been maintained in an non-executable form. 16* 3) change(87-01-16,LJAdams), approve(87-01-16,PBF7485), 17* audit(87-01-16,Gilcrease), install(87-01-19,MR12.0-1287): 18* Do not perform cleanup_init for control order initialize_mowse_terminal. 19* This will be handled when error code is fed back to video_utils_. 20* 4) change(87-02-03,LJAdams), approve(87-02-03,MCR7642), 21* audit(87-05-05,Gilcrease), install(87-05-14,MR12.1-1030): 22* The initial terminal modes were not being properly propagated. 23* 5) change(87-02-13,LJAdams), approve(87-02-13,MCR7642), 24* audit(87-05-05,Gilcrease), install(87-05-14,MR12.1-1030): 25* Do not support a MOWSE terminal type unless the line type is MOWSE. 26* 6) change(87-03-11,LJAdams), approve(87-03-11,MCR7646), 27* audit(87-05-05,Gilcrease), install(87-05-14,MR12.1-1030): 28* Use terminal_type_data to get the information for the existance of a 29* protocol (dependency). Changed ttd_version to ttd_version_3. 30* 7) change(87-05-20,LJAdams), approve(87-05-20,MCR7699), 31* audit(87-06-30,RBarstad), install(87-08-04,MR12.1-1055): 32* Provided support for MOWSE_FANSI protocol. 33* Changed name of include file terminal_type_protocols.incl.pl1 which 34* was to long to term_type_protocols.incl.pl1. 35* 8) change(87-06-03,LJAdams), approve(87-06-03,MCR7584), 36* audit(87-06-30,RBarstad), install(87-08-04,MR12.1-1055): 37* Added initial break table for DSA. 38* 9) change(87-09-04,LJAdams), approve(87-09-04,PBF7485), 39* audit(87-09-04,RBarstad), install(87-09-09,MR12.1-1102): 40* Moved placement of call to ws_tty_$abort to avoid data transmission 41* before ws_tty_ was ready to receive data. 42* END HISTORY COMMENTS */ 43 44 45 /* tc_.pl1 Terminal Control utilities -- 46* init, shutdown, reconnect/reinit, primitive desk management. 47* 48* This program is called from the I/O Module interface */ 49 50 /* format: style4,delnl,insnl,indattr,ifthen,dclind9 */ 51 52 /* */ 53 /* Written by Benson Margulies, sometime in 1981 */ 54 /* Modified 21 January 1982 by Chris Jones to add ^tabecho to initial modes */ 55 /* Modified 11 April 1982 by Richard Lamson to add get_foreign_terminal_data 56* order call for user SUPDUP support. */ 57 /* Modified 14 July 1982 to fix bug in above change in which important tc_data 58* values were not initialized for non-SUPDUP users of STYs. */ 59 /* Modified 10 September 1982 by William M. York to add the 60* send_buffered_output control order. */ 61 /* Modified 20 September 1982 by WMY to remove the send_buffered_output 62* control order, since window_$sync is a better mechanism. */ 63 /* Modified January 1983 by WMY to stop validating the cursor position for 64* calls that don't modify the screen (e.g. unechoed input). */ 65 /* Modified 1 August 1983 by Jon A. Rochlis to remove special casing 66* the terminal_info control order, since ring0 appears to handle it 67* correctly and we don't (i.e. answerback). */ 68 /* Modified 9 September 1983 by JR to map error_table_$no_table into the new 69* error_table_$unsupported terminal. It must be an error_table_ code as 70* opposed a video_et_ code because it will be used at reconnection time. */ 71 /* Modified 1 October 1983 by JR to add support for partial screen width 72* windows and to really delete the terminal_info code. */ 73 /* Modified 6 January 1983 by JR to add the randomize_redisplay control order 74* to make Barmar happy. */ 75 /* Modified 18 March 1984 by JR to add support for the set_term_type 76* order. Init and shut have been modified (mostly init). They have been 77* split into two parts, the terminal type dependent part (video info, etc.) 78* and the general tc_data part. */ 79 /* Modified 7 September 1984 by C. Marker to add set_line_speed order. */ 80 /* Modified 31 October 1984 by BIM for fix to uninitialized variable. */ 81 /* Modified 7 February 1985 by JR to make get_capabilities fill in the 82* overprint flag. */ 83 /* Modified June 1985 by Roger Negaret to support DSA networks. */ 84 85 tc_: 86 procedure; 87 return; 88 89 declare tc_disconnect$check entry (pointer, fixed binary (35)); 90 declare tc_request$init entry (pointer); 91 declare tc_request$shut entry (pointer, fixed bin (35)); 92 93 declare tc_screen$init entry (pointer, fixed binary, fixed binary); 94 declare tc_screen$shut entry (pointer); 95 declare tc_input$init entry (pointer); 96 declare tc_input$shut entry (pointer); 97 declare tc_request entry (pointer, pointer, fixed bin, fixed binary (35)); 98 99 declare tc_$init_ttp_info entry (ptr, char (*), fixed bin (35)); 100 declare tc_$shut_ttp_info entry (ptr); 101 102 declare ttt_info_$initial_string 103 entry (character (*), character (*) var, fixed binary (35)); 104 declare ttt_info_$video_info entry (character (*), fixed binary, pointer, pointer, fixed binary (35)); 105 declare ttt_info_$terminal_data 106 entry (character (*), fixed binary, fixed binary, pointer, fixed binary (35)); 107 108 declare hcs_$tty_attach entry (character (*), fixed bin (71), fixed bin, fixed bin, fixed bin (35)); 109 declare hcs_$tty_detach entry (fixed bin, fixed bin, fixed bin, fixed bin (35)); 110 declare hcs_$tty_abort entry (fixed bin, fixed bin, fixed bin, fixed bin (35)); 111 declare hcs_$tty_order entry (fixed bin, character (*), pointer, fixed bin, fixed bin (35)); 112 declare dsa_tty_$attach entry (character (*), fixed bin (71), fixed bin (35), fixed bin, fixed bin (35)); 113 declare dsa_tty_$detach entry (fixed bin (35), fixed bin, fixed bin, fixed bin (35)); 114 declare dsa_tty_$abort entry (fixed bin (35), fixed bin, fixed bin, fixed bin (35)); 115 declare dsa_tty_$order entry (fixed bin (35), character (*), pointer, fixed bin, fixed bin (35)); 116 declare ws_tty_$attach entry (ptr, char (*), fixed bin (71), fixed bin, fixed bin (35)); 117 declare ws_tty_$detach entry (ptr, fixed bin, fixed bin, fixed bin (35)); 118 declare ws_tty_$abort entry (ptr, fixed bin, fixed bin, fixed bin (35)); 119 declare ws_tty_$order entry (ptr, char (*), ptr, fixed bin, fixed bin (35)); 120 declare continue_to_signal_ entry (fixed binary (35)); 121 122 123 declare ( 124 hcs_$set_ips_mask, 125 hcs_$reset_ips_mask 126 ) entry (bit (36) aligned, bit (36) aligned); 127 declare ( 128 ipc_$mask_ev_calls, 129 ipc_$unmask_ev_calls 130 ) entry (fixed bin (35)); 131 132 declare get_system_free_area_ entry () returns (ptr); 133 134 declare dsa_error_table_$try_again 135 external static fixed bin (35); 136 137 declare ( 138 error_table_$unimplemented_version, 139 error_table_$smallarg, 140 error_table_$no_table, 141 error_table_$null_info_ptr, 142 error_table_$unsupported_terminal, 143 error_table_$incompatible_term_type, 144 video_et_$window_too_big, 145 video_et_$bad_window_id, 146 video_et_$capability_lacking, 147 video_et_$no_video_info, 148 video_et_$terminal_cannot_position, 149 video_et_$out_of_window_bounds 150 ) external static fixed bin (35); 151 152 declare tty_state fixed bin; 153 declare X_code fixed bin (35); 154 155 declare iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 156 157 declare ( 158 TC_data_ptr pointer, 159 Code fixed bin (35), 160 Request_ptr pointer, 161 Terminal_type character (*), 162 Channel character (*), 163 Event fixed bin (71), 164 Window_id bit (36) aligned, 165 Reconnection_flag bit (1), 166 MOWSE_ptr ptr 167 ) parameter; 168 169 declare 1 windows (100) based (tc_data.desk_ptr), 170 2 flags aligned, 171 3 in_use bit (1) unaligned, 172 3 status_pending bit (1) unaligned, 173 3 pad bit (34) unaligned, 174 2 location aligned, 175 3 top_row fixed bin, 176 3 n_rows fixed bin, 177 3 first_column fixed bin, 178 3 n_columns fixed bin, 179 2 window_id bit (36) aligned, /* for now, bit (index in this table) */ 180 2 window_iocb_ptr ptr, /* so we can do set_window_status orders */ 181 2 pending_status bit (36) aligned; /* may be longer someday */ 182 183 /* first bit is PIATTY (ITS hangup signal) */ 184 185 declare 1 ttd aligned like terminal_type_data automatic; 186 187 declare 1 mowse_info static, 188 2 tc_data_ptr ptr, 189 2 ttd aligned like terminal_type_data; 190 191 declare wx fixed bin; 192 declare ips_mask bit (36) aligned; 193 194 declare cleanup condition; 195 declare terminal_control_disconnection_ 196 condition; 197 198 declare (addr, after, bin, bit, clock, hbound, index, lbound, length, max, null, reverse, rtrim, substr, unspec) 199 builtin; 200 201 /* CONSTANTS */ 202 203 declare UNMASK_ALL bit (36) aligned initial (""b) internal static options (constant); 204 dcl INITIAL_BREAKTEST bit (128) unaligned internal static options (constant) init (""b); 205 /* noone in their right mind would use that for a breaktable, so it will compare unequal, and get set in hardcore */ 206 207 dcl INITIAL_MODES char (128) internal static options (constant) 208 init ( 209 "force,rawo,rawi,fulldpx,^echoplex,^prefixnl,breakall,^hndlquit,^crecho,^lfecho,^replay,^polite,^tabecho" 210 ); 211 dcl MOWSE_DEVICE char (9) internal static options (constant) init ("mowse_i/o"); 212 213 dcl MOWSE_INITIAL_MODES char (128) internal static options (constant) init ("force,ll79,pl23"); 214 215 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 216 217 init: 218 entry (TC_data_ptr, Channel, Event, Terminal_type, Reconnection_flag, MOWSE_ptr, Code); 219 220 if ^Reconnection_flag then do; 221 allocate tc_data set (tc_data_ptr); 222 tc_data.screen_data_ptr = null (); /* for cleanup handler */ 223 tc_data.input_buffer_ptr = null (); 224 tc_data.desk_ptr = null (); 225 end; 226 else tc_data_ptr = TC_data_ptr; 227 228 if substr (Channel, 1, 4) = "dsa." then do; /* DSA */ 229 tc_data.network_type = DSA_NETWORK_TYPE; 230 call dsa_tty_$attach (Channel, Event, tc_data.tty_handle, tty_state, Code); 231 end; 232 else if index (Channel, MOWSE_DEVICE) = 1 then do;/* MOWSE */ 233 tc_data.network_type = MOWSE_NETWORK_TYPE; 234 tc_data.mowse_terminal_iocb_ptr = MOWSE_ptr; 235 end; 236 else do; /* MCS */ 237 tc_data.network_type = MCS_NETWORK_TYPE; 238 call hcs_$tty_attach (Channel, Event, tc_data.devx, tty_state, Code); 239 end; 240 241 if Code ^= 0 then do; 242 free tc_data; 243 return; 244 end; 245 246 on cleanup call cleanup_init; 247 248 tc_data.event = Event; 249 250 tc_data.state.pending.have_sent_protocol = ""b; 251 tc_data.state.pending.async_same_window = ""b; 252 tc_data.state.pending.protocol_evs (*) = 0; 253 tc_data.state.pending.blocked_windows (*) = ""b; 254 255 call init_ttp_info_1 (Code); 256 if Code ^= 0 then do; 257 free tc_data; 258 return; 259 end; 260 261 tc_data.breaktest = INITIAL_BREAKTEST; 262 263 call init_ttp_info_2 (Code); 264 if Code ^= 0 then do; 265 call cleanup_init; 266 return; 267 end; 268 269 if tc_data.network_type ^= MOWSE_NETWORK_TYPE then do; 270 call init_ttp_info_3 (Code); 271 if Code ^= 0 then do; 272 call cleanup_init; 273 return; 274 end; 275 end; 276 else do; /* mowse terminal type data is set after video */ 277 /* has been attached */ 278 mowse_info.ttd = ttd; 279 mowse_info.tc_data_ptr = tc_data_ptr; 280 end; 281 282 283 if ^Reconnection_flag then do; 284 allocate windows; /* set the desk ptr */ 285 unspec (windows) = ""b; 286 windows (*).in_use = "0"b; 287 end; 288 289 if Code ^= 0 then 290 return; 291 292 TC_data_ptr = tc_data_ptr; 293 294 return; 295 296 /* Initialize only the terminal dependant info in tc_data */ 297 298 init_ttp_info: 299 entry (TC_data_ptr, Terminal_type, Code); 300 301 call init_ttp_info_1 (Code); 302 if Code ^= 0 then 303 return; 304 call init_ttp_info_2 (Code); 305 if tc_data.network_type ^= MOWSE_NETWORK_TYPE then 306 call init_ttp_info_3 (Code); /* we should not get here if were MOWSE */ 307 return; 308 309 /* Split into two operations, so init can tell the difference, if we fail. */ 310 311 init_ttp_info_1: 312 proc (Code); 313 314 dcl Code fixed bin (35); 315 316 call get_video_data (Code); 317 if Code ^= 0 then 318 return; 319 320 call verify_capabilities (tc_data.ttt_video_ptr, Code); 321 if Code ^= 0 then 322 return; 323 324 return; 325 326 end init_ttp_info_1; 327 328 init_ttp_info_2: 329 proc (Code); 330 331 dcl Code fixed bin (35); 332 333 /* Now initialize the folks down below. If that all works, 334* which it can only not by signalling, then we massage the 335* terminal */ 336 337 call tc_request$init (tc_data_ptr); 338 call tc_input$init (tc_data_ptr); 339 call tc_screen$init (tc_data.screen_data_ptr, tc_data.rows, tc_data.columns); 340 return; 341 342 end init_ttp_info_2; 343 344 init_ttp_info_3: 345 proc (Code); 346 347 dcl Code fixed bin (35); 348 349 call setup_terminal (Code); 350 351 /* Now place terminal in known state */ 352 353 call clear_screen_proc; 354 return; 355 356 end init_ttp_info_3; 357 358 request: 359 entry (TC_data_ptr, Request_ptr, Code); 360 361 tc_data_ptr = TC_data_ptr; 362 Code = 0; 363 call request_proc (Request_ptr, Code); 364 return; 365 366 request_proc: 367 procedure (R_ptr, Code); 368 declare R_ptr pointer; 369 declare Code fixed bin (35); 370 request_ptr = R_ptr; 371 372 if request_header.window_id ^= (36)"1"b then do; 373 wx = find_window (request_header.window_id, Code); 374 /* it best be there */ 375 if Code ^= 0 then 376 return; 377 378 call check_bounds (Code); 379 if Code ^= 0 then 380 return; 381 382 call tc_request (tc_data_ptr, request_ptr, 383 windows (wx).first_column + windows (wx).n_columns - 1 /* last column in the window */, Code); 384 end; 385 386 else call tc_request (tc_data_ptr, request_ptr, tc_data.columns, Code); 387 /* better not be I/D chars */ 388 389 end request_proc; 390 391 392 check_in_window: 393 entry (TC_data_ptr, Row, N_rows, Col, N_cols, Window_id, Window_iocb_ptr, Code); 394 declare (Row, N_rows) fixed bin; 395 declare (Col, N_cols) fixed bin; 396 declare Window_iocb_ptr ptr; 397 398 tc_data_ptr = TC_data_ptr; 399 Code = 0; 400 401 call check_in_window_proc (Row, N_rows, Col, N_cols, Window_id, Window_iocb_ptr); 402 return; 403 404 check_in_window_proc: 405 procedure (Row, N_rows, Col, N_cols, Window_id, Window_iocb_ptr); 406 407 declare (Row, N_rows) fixed bin; 408 declare (Col, N_cols) fixed bin; 409 declare Window_id bit (36) aligned; 410 declare Window_iocb_ptr ptr; 411 412 if Row < 1 /* no hyperspace */ 413 | N_rows < 1 /* or degenerates */ 414 | Row + N_rows - 1 > tc_data.rows /* too big */ 415 | Col < 1 /* check the other dimension also */ 416 | N_cols < 1 | Col + N_cols - 1 > tc_data.columns then do; 417 Code = video_et_$window_too_big; 418 return; 419 end; 420 421 wx = find_free_slot (); /* uninterruptable, no windows (uggh) */ 422 Window_id = windows (wx).window_id; 423 windows (wx).top_row = Row; 424 windows (wx).n_rows = N_rows; 425 windows (wx).first_column = Col; 426 windows (wx).n_columns = N_cols; 427 windows (wx).window_iocb_ptr = Window_iocb_ptr; 428 return; 429 end check_in_window_proc; 430 431 check_out_window: 432 entry (TC_data_ptr, Window_id, Code); 433 Code = 0; 434 435 tc_data_ptr = TC_data_ptr; 436 call check_out_window_proc (Window_id); 437 return; 438 439 check_out_window_proc: 440 procedure (Window_id); 441 declare Window_id bit (36) aligned; 442 443 wx = find_window (Window_id, Code); 444 if Code ^= 0 then 445 return; 446 windows (wx).in_use = "0"b; 447 return; 448 end check_out_window_proc; 449 450 resize_window: 451 entry (TC_data_ptr, Window_id, Row, N_rows, Col, N_cols, Code); 452 453 tc_data_ptr = TC_data_ptr; 454 Code = 0; 455 456 call resize_window_proc (Window_id, Row, N_rows, Col, N_cols); 457 return; 458 459 resize_window_proc: 460 procedure (Window_id, Row, N_rows, Col, N_cols); 461 declare Window_id bit (36) aligned; 462 declare Row fixed bin; 463 declare N_rows fixed bin; 464 declare Col fixed bin; 465 declare N_cols fixed bin; 466 467 if Row < 1 /* no hyperspace */ 468 | N_rows < 1 /* or degenerates */ 469 | Row + N_rows - 1 > tc_data.rows /* too big */ 470 | Col < 1 /* check the other dimension also */ 471 | N_cols < 1 | Col + N_cols - 1 > tc_data.columns then do; 472 Code = video_et_$window_too_big; 473 return; 474 end; 475 476 wx = find_window (Window_id, Code); 477 if Code ^= 0 then 478 return; 479 480 windows (wx).top_row = Row; 481 windows (wx).n_rows = N_rows; 482 windows (wx).first_column = Col; 483 windows (wx).n_columns = N_cols; 484 485 return; 486 end resize_window_proc; 487 488 get_capabilities: 489 entry (TC_data_ptr, C_ptr, Code); 490 declare C_ptr pointer; 491 492 tc_data_ptr = TC_data_ptr; 493 Code = 0; 494 call get_capabilities_proc (C_ptr); 495 return; 496 497 get_capabilities_proc: 498 procedure (C_ptr); 499 declare C_ptr pointer; 500 501 capabilities_info_ptr = C_ptr; 502 if capabilities_info.version ^= capabilities_info_version then do; 503 Code = error_table_$unimplemented_version; 504 return; 505 end; 506 507 /* These are physical capabilities -- window_io_ is expected 508* to know which we will simulate. */ 509 510 capabilities_info.screensize.columns = tc_data.terminal.columns; 511 capabilities_info.screensize.rows = tc_data.terminal.rows; 512 ttyvtblp = tc_data.ttt_video_ptr; 513 514 capabilities_info.scroll_region = 515 tty_video_table.sequences (INSERT_LINES).present & tty_video_table.sequences (DELETE_LINES).present; 516 capabilities_info.insert_chars = tty_video_table.sequences (INSERT_CHARS).present; 517 capabilities_info.insert_mode = tty_video_table.sequences (END_INSERT_CHARS).present; 518 capabilities_info.delete_chars = tty_video_table.sequences (DELETE_CHARS).present; 519 capabilities_info.overprint = tty_video_table.overstrike_available; 520 capabilities_info.line_speed = tc_data.terminal.line_speed; 521 return; 522 end get_capabilities_proc; 523 524 /* Caller of this better be damned sure order is innocuous */ 525 526 random_order: 527 entry (TC_data_ptr, Order, Info_ptr, Code); 528 declare Order character (*); 529 declare Info_ptr pointer; 530 531 tc_data_ptr = TC_data_ptr; 532 call call_order (Order, Info_ptr, Code); 533 return; 534 535 536 get_terminal_info: 537 procedure (ttp, baud_rate, code); 538 539 declare ttp char (*); /* in */ 540 declare baud_rate fixed bin; /* out */ 541 declare code fixed bin (35); /* out */ 542 543 declare 1 ti aligned like terminal_info automatic; 544 545 baud_rate = 0; 546 code = 0; 547 548 /* First, pick up the terminal type from ring 0, if our caller 549* did not give us one */ 550 551 ti.version = 1; 552 call call_order ("terminal_info", addr (ti), (0)); 553 554 if ttp ^= "" then 555 ti.term_type = ttp; 556 tc_data.ttp = ti.term_type; 557 ttd.version = ttd_version_3; 558 call ttt_info_$terminal_data (ti.term_type, (0), ti.baud_rate, addr (ttd), code); 559 if code ^= 0 then 560 return; 561 562 baud_rate = ti.baud_rate; 563 564 end get_terminal_info; 565 566 567 568 get_video_data: 569 procedure (code); 570 571 /* This should not do anything to the terminal */ 572 573 declare baud_rate fixed bin; /* in */ 574 declare code fixed bin (35); /* in */ 575 576 if Terminal_type ^= "" then /* use caller supplied type */ 577 call get_terminal_info (Terminal_type, baud_rate, code); 578 else call get_terminal_info ("", baud_rate, code); 579 if code ^= 0 then 580 return; 581 582 call check_protocol (ttd.protocol, code); 583 if code ^= 0 then do; 584 call cleanup_init; 585 return; 586 end; 587 588 call get_video_info_ptr (ttp, baud_rate, tc_data.ttt_video_ptr, code); 589 if code ^= 0 then 590 return; 591 592 if tc_data.ttt_video_ptr = null () then 593 code = video_et_$no_video_info; 594 ttyvtblp = tc_data.ttt_video_ptr; 595 596 /* fill in important values in tc_data */ 597 tc_data.rows = tty_video_table.screen_height; 598 tc_data.columns = tty_video_table.screen_line_length; 599 tc_data.line_speed = baud_rate; 600 601 /* user may be coming in via SUPDUP, so issue a 602* get_foreign_terminal_data order to get screen dimensions, etc. 603* This order call will also succeed on STY connections, but 604* the modes returned will not be what the following code looks for, 605* so no tc_data values will get changed. */ 606 607 my_ftd.version = FOREIGN_TERMINAL_DATA_VERSION_1; 608 my_ftd.area_ptr = get_system_free_area_ (); 609 call call_order ("get_foreign_terminal_data", addr (my_ftd), X_code); 610 if X_code = 0 then do; 611 mode_string_info_ptr = my_ftd.mode_string_info_ptr; 612 do i = 1 to mode_string_info.number; 613 mode_value_ptr = addr (mode_string_info.modes (i)); 614 if /* case */ mode_value.mode_name = "line_length" then 615 tc_data.columns = mode_value.numeric_value; 616 else if mode_value.mode_name = "page_length" then 617 tc_data.rows = mode_value.numeric_value; 618 else if mode_value.mode_name = "ospeed" then 619 tc_data.line_speed = mode_value.numeric_value; 620 else if mode_value.mode_name = "insert_delete_lines" | mode_value.mode_name = "idel_lines" then 621 if ^mode_value.boolean_value then do; 622 call delete_sequence (INSERT_LINES); 623 call delete_sequence (DELETE_LINES); 624 end; 625 else ; 626 else if mode_value.mode_name = "insert_delete_chars" | mode_value.mode_name = "idel_chars" then 627 if ^mode_value.boolean_value then do; 628 call delete_sequence (INSERT_CHARS); 629 call delete_sequence (DELETE_CHARS); 630 end; 631 else ; 632 end; 633 end; 634 635 return; 636 637 delete_sequence: 638 procedure (sequence_number); 639 640 if sequence_number <= tty_video_table.nseq then 641 tty_video_table.sequences (sequence_number).present = "0"b; 642 return; 643 644 declare sequence_number fixed binary; 645 646 end delete_sequence; 647 1 1 /* Begin include file foreign_terminal.incl.pl1 */ 1 2 1 3 dcl foreign_terminal_data_ptr ptr; 1 4 dcl FOREIGN_TERMINAL_DATA_VERSION_1 char (8) aligned static options (constant) init ("ftd_1"); 1 5 dcl 1 foreign_terminal_data aligned based (foreign_terminal_data_ptr), 1 6 2 version char (8), /* (Input) version of this structure */ 1 7 2 area_ptr ptr, /* (Input) area in which to allocate modes */ 1 8 2 mode_string_info_ptr ptr; /* (Output) points to allocate mode_string_info */ 1 9 /* End of version 1 data */ 1 10 1 11 /* End include file foreign_terminal.incl.pl1 */ 648 2 1 /* BEGIN INCLUDE FILE mode_string_info.incl.pl1 */ 2 2 2 3 /* Structure for parse_mode_string_ JRDavis 20 October 1980 2 4* Last modified 12 January 1981 by J. Spencer Love for version 2, make char_value varying string */ 2 5 2 6 declare mode_value_ptr ptr, 2 7 number_of_modes fixed bin; 2 8 2 9 declare 1 mode_string_info aligned based (mode_string_info_ptr), 2 10 2 version fixed bin, 2 11 2 number fixed bin, 2 12 2 modes (number_of_modes refer (mode_string_info.number)) like mode_value; 2 13 2 14 declare mode_string_info_ptr ptr; 2 15 2 16 declare 1 mode_value aligned based (mode_value_ptr), 2 17 2 version fixed bin, 2 18 2 mode_name char (32) unaligned, 2 19 2 flags, 2 20 3 boolean_valuep bit (1) unaligned, 2 21 3 numeric_valuep bit (1) unaligned, 2 22 3 char_valuep bit (1) unaligned, 2 23 3 boolean_value bit (1) unaligned, 2 24 3 pad1 bit (32) unaligned, 2 25 2 numeric_value fixed bin (35), 2 26 2 char_value char (32) varying, 2 27 2 code fixed bin (35), 2 28 2 pad2 bit (36); 2 29 2 30 declare mode_string_info_version_2 fixed bin static options (constant) initial (2), 2 31 mode_value_version_3 fixed bin static options (constant) initial (3); 2 32 2 33 /* END INCLUDE FILE mode_string_info.incl.pl1 */ 649 650 declare 1 my_ftd auto like foreign_terminal_data; 651 declare i fixed binary; 652 653 end get_video_data; 654 655 get_video_info_ptr: 656 procedure (ttp, baud_rate, video_info_ptr, code); 657 658 dcl ttp char (*); 659 dcl baud_rate fixed bin; 660 dcl video_info_ptr ptr; 661 dcl code fixed bin (35); 662 663 call ttt_info_$video_info (ttp, baud_rate, null (), video_info_ptr, code); 664 665 if code = error_table_$no_table then 666 code = error_table_$unsupported_terminal; 667 668 return; 669 670 end get_video_info_ptr; 671 672 verify_capabilities: 673 procedure (video_table_ptr, code); 674 675 dcl video_table_ptr ptr; 676 677 /* Make sure she flies */ 678 /* Must have one of abs poistioning, up/down/right/left, or home/right/down */ 679 680 declare code fixed bin (35); 681 682 code = 0; 683 684 ttyvtblp = video_table_ptr; 685 if ^((tty_video_table.sequences (ABS_POS).present 686 | (tty_video_table.sequences (CURSOR_UP).present & tty_video_table.sequences (CURSOR_DOWN).present 687 & tty_video_table.sequences (CURSOR_RIGHT).present & tty_video_table.sequences (CURSOR_LEFT).present) 688 | (tty_video_table.sequences (HOME).present & tty_video_table.sequences (CURSOR_DOWN).present 689 & tty_video_table.sequences (CURSOR_RIGHT).present))) then 690 code = video_et_$terminal_cannot_position; 691 692 end verify_capabilities; 693 694 setup_terminal: 695 procedure (code); 696 declare code fixed bin (35); 697 698 /* Type */ 699 if tc_data.network_type = DSA_NETWORK_TYPE then do; 700 701 /* For DSA, we always initialize a break table */ 702 dcl 1 dsa_break_table like echo_neg_data aligned; /* Here, because used only once */ 703 704 dsa_break_table.version = echo_neg_data_version_2; 705 dsa_break_table.break(*) = "1"b; /* All chars sets. Why not */ 706 /* The remainder is ignored by dsa_tty_index_ */ 707 708 call call_order ("set_echo_break_table", addr (dsa_break_table), code); 709 if code ^= 0 then 710 return; 711 end; 712 713 if tc_data.network_type = MOWSE_NETWORK_TYPE then do; 714 call ws_tty_$abort (tc_data.mowse_terminal_iocb_ptr, (1) /* resetread */, tty_state, (0)); 715 call call_order ("set_terminal_data", addr (mowse_info.ttd), code); 716 end; 717 else call call_order ("set_terminal_data", addr (ttd), code); 718 if code ^= 0 then 719 return; 720 721 /* Modes */ 722 723 if tc_data.network_type = MOWSE_NETWORK_TYPE then 724 call iox_$modes (tc_data.mowse_terminal_iocb_ptr, MOWSE_INITIAL_MODES, tc_data.old_mode_string, code); 725 else call set_modes (INITIAL_MODES, tc_data.old_mode_string, code); 726 if code = error_table_$smallarg then 727 code = 0; 728 if code ^= 0 then 729 return; 730 731 call send_initial_string (code); /* depends on our presence in rawo */ 732 if code ^= 0 then 733 return; 734 735 if tc_data.network_type = DSA_NETWORK_TYPE then /* DSA */ 736 call dsa_tty_$abort (tc_data.tty_handle, (1) /* resetread */, tty_state, (0)); 737 else /* MCS */ 738 call hcs_$tty_abort (tc_data.devx, (1) /* resetread */, tty_state, (0)); 739 740 call call_order ("printer_off", null (), (0)); 741 end setup_terminal; 742 743 744 send_initial_string: 745 procedure (code); 746 declare code fixed bin (35); 747 declare initial_string character (512) varying; 748 declare 1 tct aligned like request_text; 749 750 code = 0; 751 call ttt_info_$initial_string (tc_data.ttp, initial_string, code); 752 if code ^= 0 then 753 return; 754 755 if length (initial_string) = 0 then 756 return; 757 758 tct.operation = OP_WRITE_RAW; 759 tct.row = 1; 760 tct.col = 1; 761 762 begin; 763 declare i_s_non_varying char (length (initial_string)); 764 i_s_non_varying = initial_string; 765 tct.text_ptr = addr (i_s_non_varying); 766 tct.text_length = length (initial_string); 767 call tc_request (tc_data_ptr, addr (tct), tc_data.columns /* why not? */, (0)); 768 end; 769 770 end send_initial_string; 771 772 773 774 call_order: 775 procedure (order, info, code); 776 777 declare order character (*); 778 declare info pointer; 779 declare code fixed bin (35); 780 declare tty_state fixed bin; 781 declare tc_block entry (pointer, pointer, bit (36) aligned); 782 783 code = 0; 784 785 if tc_data.network_type = DSA_NETWORK_TYPE then do; 786 /* DSA */ 787 try_again: 788 call dsa_tty_$order (tc_data.tty_handle, order, info, tty_state, code); 789 if code = dsa_error_table_$try_again then do; 790 call tc_block (tc_data_ptr, request_ptr, UNMASK_ALL); 791 code = 0; 792 goto try_again; 793 end; 794 end; 795 else if tc_data.network_type = MOWSE_NETWORK_TYPE then 796 /* MOWSE */ 797 call ws_tty_$order (tc_data.mowse_terminal_iocb_ptr, order, info, tty_state, code); 798 else /* MCS */ 799 call hcs_$tty_order (tc_data.devx, order, info, tty_state, code); 800 801 call tc_disconnect$check (tc_data_ptr, code); 802 end call_order; 803 804 805 check_protocol: 806 procedure (op, code); 807 808 dcl op fixed bin; 809 dcl code fixed bin(35); 810 811 if (op > hbound(protocol_names,1)) | (op < lbound(protocol_names,1)) then 812 op = -1; 813 goto PROTOCOL (op); 814 815 PROTOCOL (-1): /* ERROR */ 816 code = error_table_$incompatible_term_type; 817 return; 818 819 PROTOCOL (0): /* NO_PROTOCOL */ 820 if tc_data.network_type = MOWSE_NETWORK_TYPE then 821 goto PROTOCOL (-1); 822 return; 823 824 PROTOCOL (1): /* MOWSE */ 825 if tc_data.network_type ^= MOWSE_NETWORK_TYPE then 826 goto PROTOCOL (-1); 827 return; 828 829 PROTOCOL (2): /* MOWSE_FANSI */ 830 return; /* valid with all network types */ 831 832 end check_protocol; 833 834 set_modes: 835 procedure (new_modes, old_modes, code); 836 837 dcl (new_modes, old_modes) char (*); 838 dcl code fixed bin (35); 839 840 mode_block: 841 begin; /* size is unknown till here */ 842 843 declare modes_ptr pointer; 844 declare 1 t_modes_info aligned, 845 2 mode_length fixed bin (21), 846 2 modes char (max (length (new_modes), length (old_modes))); 847 848 modes_ptr = addr (t_modes_info); 849 t_modes_info.mode_length = length (t_modes_info.modes); 850 t_modes_info.modes = new_modes; 851 852 call call_order ("modes", modes_ptr, code); 853 854 if code ^= 0 & code ^= error_table_$smallarg then do; 855 old_modes = t_modes_info.modes; /* the mode(s) in error are in here */ 856 return; 857 end; 858 859 if length (old_modes) = 0 then 860 return; 861 862 if t_modes_info.mode_length = 0 then do; 863 old_modes = ""; 864 return; 865 end; 866 if code = 0 then do; 867 old_modes = t_modes_info.modes; 868 return; 869 end; 870 871 /* from this point on we have a smallarg */ 872 873 code = 0; /* but we do not admit it. */ 874 if substr (reverse (rtrim (old_modes)), 1, 1) = "." 875 /* the hardcore returned an even mode, which it should */ 876 then 877 return; 878 879 /* from this point the hardcore returned a fragment of a mode */ 880 881 old_modes = reverse (after (reverse (t_modes_info.modes), ",")); 882 if length (rtrim (old_modes)) = length (old_modes) then 883 old_modes = reverse (after (reverse (old_modes), ",")); 884 /* leave room for a "." */ 885 substr (old_modes, length (rtrim (old_modes)) + 1, 1) = "."; 886 887 end mode_block; 888 end set_modes; 889 890 shut: 891 entry (TC_data_ptr); 892 893 tc_data_ptr = TC_data_ptr; 894 if tc_data_ptr = null () then 895 return; 896 897 /* turn off hairy features that we do not want to go off */ 898 899 ips_mask = ""b; 900 on cleanup 901 begin; 902 if ips_mask ^= ""b then do; 903 call hcs_$reset_ips_mask (ips_mask, ""b); 904 call ipc_$unmask_ev_calls (0); 905 end; 906 end; 907 908 call hcs_$set_ips_mask (""b, ips_mask); 909 call ipc_$mask_ev_calls (0); 910 tc_data.state.pending.count = 0; 911 912 on terminal_control_disconnection_ go to give_up_shut; 913 call clear_screen_proc; 914 call send_initial_string (0); 915 call set_modes (tc_data.old_mode_string, "", (0)); 916 917 give_up_shut: 918 call cleanup_init; 919 if tc_data.ttt_video_ptr ^= null then 920 free tc_data.ttt_video_ptr -> tty_video_table; 921 922 free tc_data; 923 TC_data_ptr = null (); 924 call ipc_$unmask_ev_calls (0); 925 call hcs_$reset_ips_mask (ips_mask, ""b); 926 927 return; 928 929 /* This entry is called when changing the terminal type. It cleans up 930* terminal type dependent info from tc_data but leaves all else alone. */ 931 932 shut_ttp_info: 933 entry (TC_data_ptr); 934 935 tc_data_ptr = TC_data_ptr; 936 if tc_data.ttt_video_ptr ^= null () then 937 free tc_data.ttt_video_ptr -> tty_video_table; 938 939 if tc_data.screen_data_ptr ^= null () then 940 call tc_screen$shut (tc_data.screen_data_ptr); 941 942 call tc_request$shut (tc_data_ptr, (0)); 943 944 return; 945 946 cleanup_init: 947 procedure; 948 949 if tc_data.screen_data_ptr ^= null () then 950 call tc_screen$shut (tc_data.screen_data_ptr); 951 952 if tc_data.input_buffer_ptr ^= null () then 953 call tc_input$shut (tc_data_ptr); 954 955 if tc_data.desk_ptr ^= null () then 956 free windows; 957 958 call tc_request$shut (tc_data_ptr, (0)); 959 960 if tc_data.network_type = DSA_NETWORK_TYPE then /* DSA */ 961 call dsa_tty_$detach (tc_data.tty_handle, (0), (0), (0)); 962 else if tc_data.network_type = MOWSE_NETWORK_TYPE then 963 /* MOWSE */ 964 call ws_tty_$detach (tc_data.mowse_terminal_iocb_ptr, (0), (0), (0)); 965 else /* MCS */ 966 call hcs_$tty_detach (tc_data.devx, (0), (0), (0)); 967 968 end cleanup_init; 969 970 971 972 find_free_slot: 973 procedure returns (fixed bin); 974 declare w fixed bin; 975 976 do w = 1 to hbound (windows, 1); 977 if ^windows (w).in_use then do; /* this should mask, or stacq, or something */ 978 windows (w).in_use = "1"b; 979 windows (w).status_pending = "0"b; 980 windows (w).pad = ""b; 981 windows (w).window_id = substr (reverse (bit (clock (), 72)), 1, 19) || bit (w, 17); 982 return (w); 983 end; 984 end; 985 signal tc_too_many_windows_; 986 declare tc_too_many_windows_ condition; 987 end find_free_slot; 988 989 find_window: 990 procedure (window_id, code) returns (fixed bin); 991 992 declare window_id bit (36) aligned; 993 declare code fixed bin (35); 994 declare wx fixed bin; 995 996 wx = bin (substr (window_id, 20), 17); 997 998 if windows (wx).window_id ^= window_id then do; 999 code = video_et_$bad_window_id; 1000 return (0); 1001 end; 1002 return (wx); 1003 end find_window; 1004 1005 check_bounds: 1006 procedure (code); 1007 declare code fixed bin (35); 1008 1009 /* The screen is assumed to have one "phantom" position beyond its 1010* specified width, where the cursor may be positioned, but text may 1011* (possible) not be displayed. The cursor may be positioned anyplace 1012* including the phantom column, but text may not be placed there, for 1013* after putting out the text the cursor would have noplace to go. 1014* This may be nondelux, but it works. Also, characters may not be solicted 1015* from that column, for we could not echo. */ 1016 1017 if request_header.row < 1 /* not in the sky */ 1018 | request_header.col < 1 /* or in china */ 1019 | request_header.row < windows (wx).top_row /* or not in */ 1020 | request_header.row > windows (wx).top_row + windows (wx).n_rows - 1 1021 | request_header.col < windows (wx).first_column 1022 | request_header.col > windows (wx).first_column + windows (wx).n_columns then 1023 go to OUT_OF_BOUNDS; 1024 1025 go to OP (request_header.operation); 1026 1027 OP (0): /* OP_ERROR */ 1028 return; 1029 1030 OP (1): /* OP_POSITION_CURSOR */ 1031 call check_bounds_within_phantom; 1032 return; 1033 1034 1035 OP (2): /* OP_CLEAR_REGION */ 1036 call check_bounds_within_phantom; 1037 1038 if request_clear_region.rows > /* extent requested */ 1039 (windows (wx).n_rows - (request_header.row - windows (wx).top_row)) then 1040 go to OUT_OF_BOUNDS; 1041 1042 if (request_clear_region.columns - request_header.col - 1) > windows (wx).n_columns then 1043 go to OUT_OF_BOUNDS; /* this will permit zero width regions in phantom col */ 1044 1045 return; 1046 1047 OP (14): /* OP_OVERWRITE_TEXT */ 1048 OP (3): /* OP_INSERT_TEXT */ 1049 call check_bounds_within_phantom; /* allow starting in phantom col */ 1050 /* make sure final column isn't beyond phantom col */ 1051 if (request_header.col + request_text.text_length) > windows (wx).first_column + windows (wx).n_columns + 1 then 1052 go to OUT_OF_BOUNDS; 1053 return; 1054 1055 OP (6): /* OP_DELETE_CHARS */ 1056 call check_bounds_within_window; 1057 if (request_header.col + request_delete_chars.count) > windows (wx).first_column + windows (wx).n_columns + 1 1058 then 1059 go to OUT_OF_BOUNDS; 1060 1061 return; 1062 1063 OP (7): /* OP_SCROLL_REGION */ 1064 /* coords are not payed attention to */ 1065 if windows (wx).n_columns ^= tc_data.columns then /* naughty, naughty, a partial width window! */ 1066 do; /* no i-del lines for these windows. tc_request should do this check, but it doesn't know about windows ... sigh */ 1067 Code = video_et_$capability_lacking; 1068 return; 1069 end; 1070 1071 if request_scroll_region.start_line < windows (wx).top_row 1072 /* */ 1073 | request_scroll_region.start_line > windows (wx).top_row + windows (wx).n_rows - 1 1074 /* */ 1075 | request_scroll_region.n_lines < 1 1076 | request_scroll_region.start_line + request_scroll_region.n_lines 1077 > windows (wx).top_row + windows (wx).n_rows then 1078 go to OUT_OF_BOUNDS; 1079 1080 return; 1081 1082 OP (9): /* OP_GET_CHARS_ECHO */ 1083 call check_bounds_within_window; 1084 if request_read.buffer_length + request_read.col > windows (wx).first_column + windows (wx).n_columns + 1 then 1085 go to OUT_OF_BOUNDS; 1086 return; 1087 1088 OP (11): /* OP_WRITE_SYNC_GET_CHARS_NO_ECHO */ 1089 call check_bounds_within_window; 1090 if request_read.prompt_length + request_read.col > windows (wx).first_column + windows (wx).n_columns + 1 then 1091 go to OUT_OF_BOUNDS; 1092 1093 return; 1094 1095 /* we don't check bounds for unechoed input, raw output and things 1096* that don't change the screen. */ 1097 1098 OP (10): /* OP_GET_CHARS_NO_ECHO */ 1099 OP (16): /* OP_READ_ONE */ 1100 OP (13): /* OP_READ_STATUS */ 1101 OP (12): /* OP_GET_CURSOR_POSITION */ 1102 OP (15): /* OP_WRITE_RAW */ 1103 OP (8): /* OP_BELL */ 1104 return; 1105 1106 OUT_OF_BOUNDS: 1107 Code = video_et_$out_of_window_bounds; 1108 return; 1109 1110 check_bounds_within_phantom: 1111 procedure; 1112 1113 if request_header.col < windows (wx).first_column 1114 /* left */ 1115 | request_header.col > windows (wx).first_column + windows (wx).n_columns + 1 1116 /* right */ 1117 then 1118 go to OUT_OF_BOUNDS; 1119 1120 return; 1121 1122 check_bounds_within_window: 1123 entry; 1124 1125 if request_header.col < windows (wx).first_column 1126 | request_header.col > windows (wx).first_column + windows (wx).n_columns - 1 then 1127 go to OUT_OF_BOUNDS; 1128 1129 end check_bounds_within_phantom; 1130 end check_bounds; 1131 1132 1133 /**** The code that follows logically belongs in tc_io_. It has been 1134* transplanted here to avoid having the tc_io_ stack frame pushed 1135* for every video operation. ****/ 1136 1137 set_up: 1138 procedure; 1139 1140 Code = 0; 1141 actual_iocbp = Iocbp -> iocb.actual_iocb_ptr; 1142 attach_data_ptr = actual_iocbp -> iocb.attach_data_ptr; 1143 mask = ""b; 1144 return; 1145 1146 end set_up; 1147 1148 declare Iocbp pointer; 1149 declare actual_iocbp pointer; 1150 declare mask bit (36) aligned; 1151 1152 3 1 /* BEGIN INCLUDE FILE tc_io_attach_data_.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(86-07-21,LJAdams), approve(86-11-11,MCR7485), 3 6* audit(86-12-16,Margolin), install(87-01-06,MR12.0-1255): 3 7* Added field to hold ptr to MOWSE terminal switch. 3 8* 2) change(86-11-26,LJAdams), approve(86-11-26,MCR7584), 3 9* audit(86-12-16,Margolin), install(87-01-06,MR12.0-1255): 3 10* tty_handle component has been added for DSA. 3 11* END HISTORY COMMENTS */ 3 12 3 13 3 14 /* Written BIM 1981-1-1 */ 3 15 /* Modified DEC 1985 by R. Negaret to add network_type and tty_handle */ 3 16 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 3 17 /* INTERNAL INTERFACE -- SUBJECT TO CHANGE */ 3 18 3 19 dcl attach_data_ptr pointer; 3 20 dcl 1 attach_data aligned based (attach_data_ptr), 3 21 2 tc_info_ptr pointer, /* data block managed by terminal control */ 3 22 2 mowse_terminal_iocb_ptr 3 23 pointer, /* pointer to the MOWSE terminal switch */ 3 24 2 attach_descrip character (128) varying, 3 25 2 open_descrip character (64) varying, 3 26 2 device_id character (32) unaligned,/* given in atd */ 3 27 2 device_used character (32) unaligned,/* aquired by dm_ */ 3 28 2 terminal_type character (32) unaligned, 3 29 2 dial_phone character (64) varying, 3 30 2 resource_desc character (256) unaligned, 3 31 2 network_type fixed bin, 3 32 2 tty_index fixed bin, 3 33 2 tty_handle fixed bin (35), 3 34 2 operation_hlock fixed bin, /* if this is nonzero detach may not free this structure */ 3 35 2 flags aligned, 3 36 3 assigned_ev_channel 3 37 bit (1) unaligned, /* we got the channel as fast channel */ 3 38 3 created_ev_channel bit (1) unaligned, /* we got it as slow channel */ 3 39 3 have_ev_channel /* there is a channel to use */ 3 40 bit (1) unaligned, 3 41 3 login_channel bit (1) unaligned, /* we are login channel */ 3 42 3 phone_given bit (1) unaligned, /* dial_out */ 3 43 3 must_release bit (1) unaligned, /* we must call release channel */ 3 44 3 no_block bit (1) unaligned, /* never block */ 3 45 3 async_detach bit (1) unaligned, /* detach_iocb with hlock nonzero */ 3 46 3 hangup bit (1) unaligned, 3 47 3 debug bit (1) unaligned, 3 48 3 pad bit (26) unaligned, 3 49 2 dial_manager_event aligned like event_wait_channel, 3 50 /* so we can do set_hangup_proc */ 3 51 2 event_wait aligned like event_wait_channel; 3 52 /* init attributes and all */ 3 53 4 1 /* BEGIN INCLUDE FILE ... event_wait_channel.incl.pl1 */ 4 2 4 3 /* ipc_$block wait list with one channel 4 4* 4 5* Written 9-May-79 by M. N. Davidoff. 4 6**/ 4 7 4 8 declare 1 event_wait_channel aligned, 4 9 2 n_channels fixed bin initial (1), /* number of channels */ 4 10 2 pad bit (36), 4 11 2 channel_id (1) fixed bin (71); /* event channel to wait on */ 4 12 4 13 /* END INCLUDE FILE ... event_wait_channel.incl.pl1 */ 3 54 3 55 3 56 /* END INCLUDE FILE tc_io_attach_data_.incl.pl1 */ 1153 5 1 /* begin include file tc_desk_info_.incl.pl1 BIM June 1981 */ 5 2 /* Modified 1 October 1983 by Jon A. Rochlis to add support for partial 5 3* screen width windows */ 5 4 /* Modified 28 March 1984 by JR to add window_iocb_ptr so tc_ can inform 5 5* window_ of events such as reconnection, by doing set_window_status control 5 6* orders. */ 5 7 5 8 /* internal interface */ 5 9 5 10 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 5 11 /* requests to desk management, first pass implementation */ 5 12 5 13 declare tc_desk_info_ptr pointer; 5 14 declare 1 tc_desk_window_info aligned based (tc_desk_info_ptr), 5 15 2 first_row fixed bin, /* top row of window */ 5 16 2 n_rows fixed bin, /* How many rows */ 5 17 2 first_column fixed bin, /* Fist column of window */ 5 18 2 n_columns fixed bin, /* How many columns */ 5 19 2 window_id bit (36) aligned, 5 20 2 window_iocb_ptr ptr; 5 21 5 22 /* used in calls to terminal control to establish rearrange, 5 23* and inquire about windows */ 5 24 5 25 /* end include file tc_desk_info_.incl.pl1 */ 1154 6 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 6 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 6 3* version number to IOX2. */ 6 4 /* format: style2 */ 6 5 6 6 dcl 1 iocb aligned based, /* I/O control block. */ 6 7 2 version character (4) aligned, /* IOX2 */ 6 8 2 name char (32), /* I/O name of this block. */ 6 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 6 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 6 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 6 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 6 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 6 14 2 reserved bit (72), /* Reserved for future use. */ 6 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 6 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 6 17 /* open(p,mode,not_used,s) */ 6 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 6 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 6 20 /* get_line(p,bufptr,buflen,actlen,s) */ 6 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 6 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 6 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 6 24 /* put_chars(p,bufptr,buflen,s) */ 6 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 6 26 /* modes(p,newmode,oldmode,s) */ 6 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 6 28 /* position(p,u1,u2,s) */ 6 29 2 control entry (ptr, char (*), ptr, fixed (35)), 6 30 /* control(p,order,infptr,s) */ 6 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 6 32 /* read_record(p,bufptr,buflen,actlen,s) */ 6 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 6 34 /* write_record(p,bufptr,buflen,s) */ 6 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 6 36 /* rewrite_record(p,bufptr,buflen,s) */ 6 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 6 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 6 39 /* seek_key(p,key,len,s) */ 6 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 6 41 /* read_key(p,key,len,s) */ 6 42 2 read_length entry (ptr, fixed (21), fixed (35)), 6 43 /* read_length(p,len,s) */ 6 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 6 45 /* open_file(p,mode,desc,not_used,s) */ 6 46 2 close_file entry (ptr, char (*), fixed bin (35)), 6 47 /* close_file(p,desc,s) */ 6 48 2 detach entry (ptr, char (*), fixed bin (35)); 6 49 /* detach(p,desc,s) */ 6 50 6 51 declare iox_$iocb_version_sentinel 6 52 character (4) aligned external static; 6 53 6 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 1155 1156 1157 1158 tc_io_control: 1159 entry (Iocbp, Order, Info_ptr, Code); 1160 call set_up; 1161 tc_data_ptr = attach_data.tc_info_ptr; 1162 1163 declare line_speed_ptr pointer; 1164 declare line_speed fixed bin based (line_speed_ptr); 1165 1166 declare sub_error_ condition; 1167 1168 dcl 1 fsc_info like mowse_io_flush_subchannel_info; 1169 1170 attach_data.operation_hlock = attach_data.operation_hlock + 1; 1171 on terminal_control_disconnection_ call disconnect_handler; 1172 on cleanup attach_data.operation_hlock = attach_data.operation_hlock - 1; 1173 1174 on sub_error_ call perhaps_internal_error; 1175 1176 if /* case */ Order = "window_operation" then 1177 call request_proc (Info_ptr, Code); 1178 1179 else if Order = "clear_screen" then 1180 call clear_screen_proc; 1181 1182 else if Order = "get_screen_image_ptr" then 1183 call get_screen_image_proc (Info_ptr); /* POINTER IS OUTPUT ! */ 1184 1185 else if Order = "get_capabilities" then 1186 call get_capabilities_proc (Info_ptr); 1187 1188 else if Order = "check_in_window" then do; 1189 tc_desk_info_ptr = Info_ptr; 1190 call check_in_window_proc (tc_desk_window_info.first_row, tc_desk_window_info.n_rows, 1191 tc_desk_window_info.first_column, tc_desk_window_info.n_columns, tc_desk_window_info.window_id, 1192 tc_desk_window_info.window_iocb_ptr); 1193 end; 1194 else if Order = "check_out_window" then do; 1195 tc_desk_info_ptr = Info_ptr; 1196 call check_out_window_proc (tc_desk_window_info.window_id); 1197 end; 1198 else if Order = "resize_window" then do; 1199 1200 tc_desk_info_ptr = Info_ptr; 1201 call resize_window_proc (tc_desk_window_info.window_id, tc_desk_window_info.first_row, 1202 tc_desk_window_info.n_rows, tc_desk_window_info.first_column, tc_desk_window_info.n_columns); 1203 end; 1204 else if Order = "set_line_speed" then do; 1205 line_speed_ptr = Info_ptr; 1206 tc_data.line_speed = line_speed; 1207 end; 1208 else if Order = "debug_on" then 1209 attach_data.debug = "1"b; 1210 else if Order = "debug_off" then 1211 attach_data.debug = "0"b; 1212 1213 else if Order = "set_term_type" then do; 1214 begin; 1215 sttip = Info_ptr; 1216 if sttip = null () then do; 1217 Code = error_table_$null_info_ptr; 1218 return; 1219 end; 1220 if set_term_type_info.version ^= stti_version_1 then do; 1221 Code = error_table_$unimplemented_version; 1222 return; 1223 end; 1224 call set_term_type_proc (set_term_type_info.name, Code); 1225 return; 1226 end; /* begin */ 1227 end; /* case do */ 1228 1229 else if Order = "reconnection" then 1230 call reconnection_proc (Code); 1231 1232 else if Order = "randomize_redisplay" then /* to prevent position_cursor from optimizing */ 1233 tc_data.state.cursor_valid = "0"b; 1234 else if Order = "initialize_mowse_terminal" then do; 1235 fsc_info.subchannel = FG; 1236 fsc_info.version = mowse_io_info_version_1; 1237 call iox_$control (tc_data.mowse_terminal_iocb_ptr, "flush_subchannel", addr (fsc_info), Code); 1238 call init_ttp_info_3 (Code); 1239 if Code ^= 0 then 1240 return; 1241 call ws_tty_$attach (tc_data.mowse_terminal_iocb_ptr, Channel, Event, tty_state, Code); 1242 end; 1243 else call call_order (Order, Info_ptr, Code); /* Trust our caller */ 1244 1245 reconnection_proc: 1246 proc (Code); 1247 1248 dcl new_ttp char (32); 1249 dcl video_info_ptr ptr; 1250 dcl Code fixed bin (35); 1251 1252 dcl user_info_$terminal_data 1253 entry (char (*), char (*), char (*), fixed bin, char (*)); 1254 dcl tc_io_$reconnection entry (ptr, fixed bin (35)); 1255 dcl video_utils_$turn_off_login_channel 1256 entry (fixed bin (35)); 1257 1258 call user_info_$terminal_data ("", new_ttp, "", (0), ""); 1259 /* get new terminal type */ 1260 1261 /* see if the new terminal will fly before trying to tweak tc_io_ */ 1262 1263 call get_video_info_ptr (new_ttp, 0, video_info_ptr, Code); 1264 if Code ^= 0 then do; 1265 REVOKE_VIDEO: 1266 call video_utils_$turn_off_login_channel (Code); 1267 return; 1268 end; 1269 1270 call verify_capabilities (video_info_ptr, Code); 1271 if video_info_ptr ^= null () /* let's play it safe */ 1272 then 1273 free video_info_ptr -> tty_video_table; 1274 if Code ^= 0 then 1275 goto REVOKE_VIDEO; 1276 1277 /* looks good ... let's tell tc_ */ 1278 1279 call tc_io_$reconnection (attach_data_ptr, Code); 1280 if Code ^= 0 then 1281 goto REVOKE_VIDEO; 1282 1283 /* Now inform window (and therefore applications) of the change */ 1284 1285 dcl 1 WSI aligned like window_status_info; 1286 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 1287 1288 WSI.version = window_status_version_1; 1289 WSI.status_string = W_STATUS_TTP_CHANGE | W_STATUS_SCREEN_INVALID | W_STATUS_RECONNECTION; 1290 1291 do wx = 1 to hbound (windows, 1); 1292 if windows (wx).in_use then 1293 call iox_$control (windows (wx).window_iocb_ptr, "set_window_status", addr (WSI), (0)); 1294 end; /* do */ 1295 1296 return; 1297 1298 end reconnection_proc; 1299 1300 set_term_type_proc: 1301 proc (new_ttp, Code); 1302 1303 dcl new_ttp char (*); 1304 dcl Code fixed bin (35); 1305 dcl video_info_ptr ptr; 1306 1307 /* First a dry run to make sure the new ttp will fly */ 1308 1309 call get_terminal_info(new_ttp, (0), Code); 1310 if Code ^= 0 then 1311 return; 1312 1313 call check_protocol (ttd.protocol, Code); 1314 if Code ^= 0 then 1315 return; 1316 1317 call get_video_info_ptr (new_ttp, 0, video_info_ptr, Code); 1318 if Code ^= 0 then 1319 return; 1320 1321 call verify_capabilities (video_info_ptr, Code); 1322 if video_info_ptr ^= null () /* play it safe */ 1323 then 1324 free video_info_ptr -> tty_video_table; 1325 if Code ^= 0 then 1326 return; 1327 1328 /* Update tc_'s idea of the terminal type */ 1329 1330 call tc_$shut_ttp_info (tc_data_ptr); 1331 call tc_$init_ttp_info (tc_data_ptr, set_term_type_info.name, Code); 1332 if Code ^= 0 then 1333 return; /* Boy are we in trouble if this doesn't work */ 1334 1335 /* Now inform window (and therefore applications) of the change */ 1336 1337 dcl 1 WSI aligned like window_status_info; 1338 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 1339 WSI.version = window_status_version_1; 1340 WSI.status_string = W_STATUS_TTP_CHANGE | W_STATUS_SCREEN_INVALID; 1341 1342 do wx = 1 to hbound (windows, 1); 1343 if windows (wx).in_use then 1344 call iox_$control (windows (wx).window_iocb_ptr, "set_window_status", addr (WSI), (0)); 1345 end; /* do */ 1346 1347 return; 1348 1349 end set_term_type_proc; 1350 1351 1352 1353 clear_screen_proc: 1354 procedure; 1355 1356 declare 1 rcr aligned like request_clear_region; 1357 1358 rcr.sentinel = REQUEST_SENTINEL; 1359 rcr.request_id = clock (); 1360 rcr.window_id = (36)"1"b; /* Special internal op */ 1361 rcr.coords = 1; /* will set both values */ 1362 rcr.operation = OP_CLEAR_SCREEN_NO_OPT; 1363 1364 rcr.extent.rows = tc_data.terminal.rows; 1365 rcr.extent.columns = tc_data.terminal.columns; 1366 1367 call request_proc (addr (rcr), (0)); 1368 return; 1369 end clear_screen_proc; 1370 1371 1372 get_screen_image_proc: 1373 procedure (si_ptr); 1374 declare si_ptr pointer; 1375 si_ptr = tc_data.screen_data_ptr; /* violate modularization, but its cheaper */ 1376 return; 1377 end get_screen_image_proc; 1378 1379 reinit_return: 1380 if tc_data.state.pending.count < 0 then 1381 tc_data.state.pending.count = 0; 1382 if attach_data.operation_hlock ^= 0 then 1383 attach_data.operation_hlock = attach_data.operation_hlock - 1; 1384 return; 1385 1386 hangup_return: 1387 attach_data.operation_hlock = attach_data.operation_hlock - 1; 1388 1389 return; 1390 1391 disconnect_handler: 1392 procedure; 1393 1394 /* The disconnection strategy is different from that of tty_ */ 1395 /* If we are a login_channel, and a disconnection occurs, we 1396* wait for the reconnection, but we want applications to know 1397* that something is wrong. also, none of the checked-in windows 1398* will be valid after a detach/reattach. 1399* So when window_io_ gets an invalid-window-id fom us/tc_, 1400* it must attempt to re-check-in, and consider that evidence that 1401* it can trust no screen state. Thus "completing the operation" 1402* on disconnections is not neccessary ... we wait for the reconnection, 1403* and then return invalid_window_id. We cannot return a more mnemotic 1404* code because the disconnect, detach, attach could have happened 1405* while we were not even on the stack to notice. 1406* 1407* If we are not a login channel, then the disconnection is just 1408* a hungup channel, which we translate back into io_no_permission 1409* and return it to the caller. 1410**/ 1411 1412 declare video_et_$bad_window_id 1413 fixed bin (35) ext static; 1414 declare find_condition_info_ entry (pointer, pointer, fixed binary (35)); 1415 declare video_utils_$turn_off_for_debug 1416 entry; 1417 declare timer_manager_$sleep entry (fixed binary (71), bit (2)); 1418 declare video_data_$error_name external static character (32); 7 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 7 2 7 3 /* Structure for find_condition_info_. 7 4* 7 5* Written 1-Mar-79 by M. N. Davidoff. 7 6**/ 7 7 7 8 /* automatic */ 7 9 7 10 declare condition_info_ptr pointer; 7 11 7 12 /* based */ 7 13 7 14 declare 1 condition_info aligned based (condition_info_ptr), 7 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 7 16 2 version fixed binary, /* Must be 1 */ 7 17 2 condition_name char (32) varying, /* name of condition */ 7 18 2 info_ptr pointer, /* pointer to the condition data structure */ 7 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 7 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 7 21 2 flags unaligned, 7 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 7 23 3 pad1 bit (35), 7 24 2 pad2 bit (36), 7 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 7 26 2 pad3 (4) bit (36); 7 27 7 28 /* internal static */ 7 29 7 30 declare condition_info_version_1 7 31 fixed binary internal static options (constant) initial (1); 7 32 7 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 1419 8 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 8 2 /* format: style2 */ 8 3 8 4 declare condition_info_header_ptr 8 5 pointer; 8 6 declare 1 condition_info_header 8 7 aligned based (condition_info_header_ptr), 8 8 2 length fixed bin, /* length in words of this structure */ 8 9 2 version fixed bin, /* version number of this structure */ 8 10 2 action_flags aligned, /* tell handler how to proceed */ 8 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 8 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 8 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 8 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 8 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 8 16 3 pad bit (32) unaligned, 8 17 2 info_string char (256) varying, /* may contain printable message */ 8 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 8 19 8 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 1420 9 1 /* Begin the include file, tc_disconnect_info.incl.pl1 */ 9 2 9 3 9 4 9 5 /****^ HISTORY COMMENTS: 9 6* 1) change(86-12-17,LJAdams), approve(86-12-17,MCR7485), 9 7* audit(86-12-19,Margolin), install(87-01-06,MR12.0-1255): 9 8* Modified to support MOWSE. 9 9* 2) change(86-12-17,LJAdams), approve(86-12-17,MCR7584), 9 10* audit(86-12-19,Margolin), install(87-01-06,MR12.0-1255): 9 11* Modified to support DSA. 9 12* END HISTORY COMMENTS */ 9 13 9 14 9 15 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 9 16 declare tcdi_ptr pointer; 9 17 declare 1 tc_disconnect_info aligned based (tcdi_ptr), 9 18 2 header aligned like condition_info_header, 9 19 2 tc_data_ptr pointer, 9 20 2 devx fixed bin, /*MCS network*/ 9 21 2 tty_handle fixed bin (35), /*DSA network*/ 9 22 2 mowse_terminal_iocb_ptr ptr; /*MOWSE network*/ 9 23 9 24 9 25 declare terminal_control_disconnection_ 9 26 condition; 9 27 9 28 /* End of the include file tc_disconnect_info.incl.pl1 */ 1421 10 1 /* BEGIN INCLUDE FILE sub_error_info.incl.pl1 */ 10 2 /* format: style2 */ 10 3 10 4 /* The include file condition_info_header must be used with this file */ 10 5 10 6 declare sub_error_info_ptr pointer; 10 7 declare 1 sub_error_info aligned based (sub_error_info_ptr), 10 8 2 header aligned like condition_info_header, 10 9 2 retval fixed bin (35), /* return value */ 10 10 2 name char (32), /* module name */ 10 11 2 info_ptr ptr; 10 12 10 13 declare sub_error_info_version_1 10 14 internal static options (constant) fixed bin init (1); 10 15 10 16 /* END INCLUDE FILE sub_error_info.incl.pl1 */ 1422 1423 declare 1 ci aligned like condition_info; 1424 declare error_table_$io_no_permission 1425 external static fixed bin (35); 1426 1427 1428 ci.version = condition_info_version_1; 1429 call find_condition_info_ (null (), addr (ci), (0)); 1430 tcdi_ptr = ci.info_ptr; 1431 if tc_data.network_type = DSA_NETWORK_TYPE then do; 1432 if tc_disconnect_info.tty_handle ^= attach_data.tty_handle then do; 1433 call continue_to_signal_ (0); 1434 return; 1435 end; 1436 end; 1437 else if tc_data.network_type = MOWSE_NETWORK_TYPE then do; 1438 if tc_disconnect_info.mowse_terminal_iocb_ptr ^= attach_data.mowse_terminal_iocb_ptr then do; 1439 call continue_to_signal_ (0); 1440 return; 1441 end; 1442 end; 1443 else if tc_disconnect_info.devx ^= attach_data.tty_index then do; 1444 call continue_to_signal_ (0); 1445 return; 1446 end; 1447 1448 if ^attach_data.login_channel then do; 1449 Code = error_table_$io_no_permission; 1450 call force_unmask; 1451 go to hangup_return; 1452 end; 1453 1454 /* We are a login channel */ 1455 1456 call force_unmask; 1457 1458 do while ("1"b); /* wait one minute for AS to take care of us */ 1459 if attach_data.async_detach then 1460 goto reconnected; 1461 call timer_manager_$sleep (2, "11"b /* rel secs */); 1462 end; 1463 1464 reconnected: 1465 Code = video_et_$bad_window_id; 1466 go to hangup_return; 1467 1468 perhaps_internal_error: 1469 entry; 1470 1471 ci.version = 1; 1472 call find_condition_info_ (null (), addr (ci), (0)); 1473 sub_error_info_ptr = ci.info_ptr; 1474 if sub_error_info.name ^= video_data_$error_name then do; 1475 call continue_to_signal_ (0); 1476 return; 1477 end; /* Its ours, and noone elses */ 1478 1479 if attach_data.login_channel then do; 1480 if attach_data.debug then do; 1481 call video_utils_$turn_off_for_debug; 1482 call continue_to_signal_ (0); 1483 ci.info_ptr -> condition_info_header.cant_restart = "1"b; 1484 return; 1485 end; 1486 call shut (attach_data.tc_info_ptr); 1487 call init (attach_data.tc_info_ptr, attach_data.device_used, attach_data.event_wait.channel_id (1), "", 1488 "0"b /* not reconnection */, attach_data.mowse_terminal_iocb_ptr, Code); 1489 if Code = 0 then 1490 Code = video_et_$bad_window_id; 1491 go to reinit_return; 1492 end; /* login channel case */ 1493 call continue_to_signal_ (0); /* emit the error msg */ 1494 return; 1495 end disconnect_handler; 1496 1497 1498 1499 force_unmask: 1500 procedure; 1501 declare hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 1502 1503 call hcs_$reset_ips_mask ((36)"1"b, ""b); 1504 1505 end force_unmask; 1506 11 1 /* 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 */ 1507 12 1 /* BEGIN INCLUDE FILE... tty_video_tables.incl.pl1 */ 12 2 /* Created: 3 June 1979 by Bernard S. Greenberg */ 12 3 /* Modified: 9 June 1981 by G. Palter to switch to line/column orientation */ 12 4 12 5 /* Definition of the video operations supported by a terminal */ 12 6 12 7 dcl tty_video_tables_version_1 fixed binary static options (constant) initial (1); 12 8 12 9 dcl ttyvtblp pointer; 12 10 dcl tty_video_table_video_chars_len fixed binary (21); 12 11 12 12 dcl 1 tty_video_table aligned based (ttyvtblp), 12 13 2 version fixed binary initial (tty_video_tables_version_1), 12 14 2 screen_height fixed binary, /* # of lines on screen */ 12 15 2 screen_line_length fixed binary, /* # of characters on a line */ 12 16 2 scroll_count fixed binary, /* # of lines scrolled by LF at bottom */ 12 17 2 flags, 12 18 3 overstrike_available bit (1) unaligned, /* ON => overstrike works */ 12 19 3 automatic_crlf bit (1) unaligned, /* ON => automatically goes to next line from last column */ 12 20 3 simulate_eol bit (1) unaligned, /* ON => program must simulate clear-to-end-of-line */ 12 21 3 pad bit (33) unaligned, 12 22 2 video_chars_len fixed binary (21), /* combined length of all sequences used */ 12 23 2 pad (2) bit (36), 12 24 2 nseq fixed binary, /* # of video sequences defined */ 12 25 2 sequences (N_VIDEO_SEQUENCES refer (tty_video_table.nseq)) like tty_video_seq aligned, 12 26 /* the control sequences */ 12 27 2 video_chars character (tty_video_table_video_chars_len refer (tty_video_table.video_chars_len)) unaligned; 12 28 12 29 dcl video_chars_ptr pointer; /* -> tty_video_table.video_chars */ 12 30 dcl video_chars character (tty_video_table.video_chars_len) based (video_chars_ptr); 12 31 12 32 12 33 /* A single video sequence: it may contain encoded screen coordinates or a repeat counter */ 12 34 12 35 dcl ttyvseqp pointer; 12 36 12 37 dcl 1 tty_video_seq based (ttyvseqp) aligned, 12 38 2 flags unaligned, /* first 2 characters */ 12 39 3 present bit (1) unaligned, /* ON => this feature is present */ 12 40 3 interpret bit (1) unaligned, /* ON => sequence contains encoded coordinates/repeat count */ 12 41 3 able_to_repeat bit (1) unaligned, /* ON => sequence contains a repeat count */ 12 42 3 cpad_present bit (1) unaligned, /* ON => this operation must be padded */ 12 43 3 cpad_in_chars bit (1) unaligned, /* ON => pad expressed in characters */ 12 44 3 pad bit (7) unaligned, 12 45 3 general bit (6) unaligned, /* reserved for per-operation flags */ 12 46 2 cpad fixed binary (18) unsigned unaligned, /* padding in characters of .1 millisecond units */ 12 47 2 pad bit (15) unal, 12 48 2 len fixed binary (9) unsigned unaligned, /* # of valid characters in sequence */ 12 49 2 seq_index fixed binary (12) unsigned unaligned; /* start of string in character data */ 12 50 12 51 12 52 /* Available operations */ 12 53 12 54 dcl (ABS_POS initial (1), CLEAR_SCREEN initial (2), 12 55 CLEAR_TO_EOS initial (3), HOME initial (4), 12 56 CLEAR_TO_EOL initial (5), CURSOR_UP initial (6), 12 57 CURSOR_RIGHT initial (7), CURSOR_DOWN initial (8), 12 58 CURSOR_LEFT initial (9), INSERT_CHARS initial (10), 12 59 END_INSERT_CHARS /* if not present, insert-chars opens up N spaces */ 12 60 initial (11), DELETE_CHARS initial (12), 12 61 INSERT_LINES initial (13), DELETE_LINES initial (14)) 12 62 fixed binary static options (constant); 12 63 12 64 dcl N_VIDEO_SEQUENCES fixed binary static options (constant) initial (14); 12 65 12 66 12 67 /* Encoding of special values (eg: coordinates or the repeat count) */ 12 68 12 69 dcl 1 tty_numeric_encoding based unaligned, 12 70 2 flags, 12 71 3 must_be_on bit (1) unaligned, /* ON => an encoding; not a character */ 12 72 3 express_in_decimal bit (1) unaligned, /* ON => express it as decimal digits */ 12 73 3 express_in_octal bit (1) unaligned, /* ON => express it as octal digits; both OFF => in binary */ 12 74 12 75 3 offset_is_0 bit (1) unaligned, /* ON => offset is not stored as it's zero */ 12 76 2 l_c_or_n fixed binary (2) unsigned unaligned, /* 0 = line, 1= column, 2 = repeat-count */ 12 77 2 num_digits fixed bin (2) unsigned unaligned, /* # of digits for decimal/octal; 0 => as many as needed */ 12 78 2 pad bit (1) unaligned, 12 79 2 offset fixed bin (8) unaligned; /* offset to add to the number */ 12 80 12 81 /* END INCLUDE FILE tty_video_tables.incl.pl1 */ 1508 1509 13 1 /* BEGIN INCLUDE FILE tc_data_.incl.pl1 BIM May 1981 */ 13 2 13 3 13 4 /****^ HISTORY COMMENTS: 13 5* 1) change(86-07-22,LJAdams), approve(86-11-13,MCR7485), 13 6* audit(86-12-19,Margolin), install(87-01-06,MR12.0-1255): 13 7* Added mowse_terminal_iocb_ptr field. 13 8* 2) change(86-11-26,LJAdams), approve(86-11-26,MCR7584), 13 9* audit(86-12-19,Margolin), install(87-01-06,MR12.0-1255): 13 10* tty_handle component has been added for DSA. 13 11* END HISTORY COMMENTS */ 13 12 13 13 13 14 /* Modified DEC 1985 by R. Negaret to add network_type and tty_handle */ 13 15 /* format: style3 */ 13 16 /* This data structure should contain the information 13 17* to run terminal control, regardless of what I/O module 13 18* it happens to live in */ 13 19 13 20 declare tc_data_ptr pointer; 13 21 declare 1 tc_data aligned based (tc_data_ptr), 13 22 2 network_type fixed bin, /* Identification of the network: 13 23* MCS_NETWORK_TYPE, DSA_NETWORK_TYPE, ... */ 13 24 2 devx fixed bin, /* hardcore devx */ 13 25 2 tty_handle fixed bin (35), 13 26 2 event fixed bin (71), /* tty_index wakes this up */ 13 27 2 mowse_terminal_iocb_ptr 13 28 ptr, /* ptr to mowse_terminal_ switch */ 13 29 2 change_pclock fixed bin (35), /* for detecting async happenings */ 13 30 2 ttp character (32) unaligned, /* terminal type */ 13 31 2 ttt_video_ptr pointer, 13 32 2 breaktest bit (128) unaligned, 13 33 2 terminal aligned, 13 34 3 rows fixed bin, /* mostly for better name */ 13 35 3 columns fixed bin, 13 36 3 line_speed fixed bin, 13 37 2 state aligned like terminal_state, 13 38 2 tty_read_buffer character (1024) unaligned, /* should suffice */ 13 39 2 input_buffer_ptr 13 40 pointer, 13 41 2 screen_data_ptr pointer, 13 42 2 desk_ptr pointer, /* table of windows */ 13 43 2 old_mode_string character (512) unaligned, 13 44 2 global_buffer_index 13 45 fixed bin, 13 46 2 global_buffer_limit 13 47 fixed bin, 13 48 2 global_output_buffer 13 49 char (512) unaligned; 13 50 13 51 13 52 declare tc_break_array (0:127) bit (1) unaligned defined (tc_data.breaktest) position (1); 13 53 13 54 declare 1 terminal_state aligned based, 13 55 2 flags aligned, 13 56 3 insert_mode bit (1) unaligned, 13 57 3 cursor_valid bit (1) unaligned, /* we know pos */ 13 58 3 echnego_outstanding 13 59 bit (1) unaligned, 13 60 3 mark_outstanding 13 61 bit (1) unaligned, 13 62 3 pad bit (32) unaligned, 13 63 2 pending aligned, 13 64 3 count fixed bin, /* count of invocations blocked */ 13 65 3 input_count fixed bin, /* how many are input */ 13 66 3 protocol_evs (72) fixed bin (71), /* yea, too damn big */ 13 67 3 have_sent_protocol 13 68 bit (72) unaligned, 13 69 3 async_same_window 13 70 bit (72) unaligned, /* for reflection back to blocking window */ 13 71 3 blocked_windows 13 72 (72) bit (36) aligned, /* only 1:count are valid */ 13 73 2 cursor_position aligned, /* respectable only if valid */ 13 74 3 row fixed bin, 13 75 3 col fixed bin, 13 76 2 current_mark fixed bin (9) unsigned, 13 77 2 last_mark_back fixed bin (9) unsigned; 13 78 13 79 declare state_async_same_window 13 80 (72) bit (1) unaligned defined (tc_data.state.pending.async_same_window) position (1); 13 81 13 82 declare state_have_sent_protocol 13 83 (72) bit (1) unaligned defined (tc_data.state.pending.have_sent_protocol) position (1); 13 84 13 85 /* END INCLUDE FILE tc_data_.incl.pl1 */ 1510 1511 14 1 /* BEGIN INCLUDE FILE tc_operations_.incl.pl1 BIM May 1981 */ 14 2 14 3 /* Modified 7 February 1985 by Jon Rochlis to add saved_ips_mask to 14 4* request_header. */ 14 5 14 6 /* format: style3 */ 14 7 14 8 /* These are the operations that the "virtual video terminal" is expected to 14 9*provide. These are the primitive operation. For example, the various 14 10*flavors of region clearing are collapsed into "clear region". The particular 14 11*operations of clear screen, clear to end of screen, and clear to end of line 14 12*are special cases which will be used when terminal functionality permits. Of 14 13*course, at the user interface level, these are provided as convienience. 14 14*This introduces the innefficiency of mapping CLEOL -> CL-REGION -> CLEOL. 14 15*However, CLEOL _i_n _a _w_i_n_d_o_w does not always mean CLEOL on the screen. It will 14 16*not unless the window is full width, or happens to be rightmost. Similiarly, 14 17*a user call of CLEAR_WINDOW is just a region to the terminal. */ 14 18 14 19 declare request_ptr pointer; 14 20 declare REQUEST_SENTINEL character (4) aligned init ("RqqS") internal static options (constant); 14 21 14 22 declare 1 request_header aligned based (request_ptr), 14 23 2 sentinel character (4) aligned, 14 24 2 request_id fixed bin (71), /* Clock Value */ 14 25 2 window_id bit (36) aligned, 14 26 2 coords aligned like r_coords, 14 27 2 operation fixed bin, 14 28 2 flags aligned, 14 29 3 async_interruption 14 30 bit (1) unaligned, /* Output */ 14 31 3 this_window bit (1) unaligned, /* ditto */ 14 32 2 saved_ips_mask bit (36) aligned; /* so tc_block can restore mask from window_io_ */ 14 33 14 34 declare 1 r_coords aligned based, 14 35 2 row fixed bin, 14 36 2 col fixed bin; 14 37 14 38 declare OP_ERROR fixed bin initial (0) internal static options (constant); 14 39 declare OP_POSITION_CURSOR fixed bin initial (1) internal static options (constant); 14 40 14 41 declare OP_CLEAR_REGION fixed bin initial (2) internal static options (constant); 14 42 14 43 /* This next one is for the TC operation of clearing terminal without 14 44* any assumptions, used when the user indicates screen damage, or on 14 45* reconnection. */ 14 46 14 47 declare OP_CLEAR_SCREEN_NO_OPT 14 48 fixed bin init (4) internal static options (constant); 14 49 14 50 declare 1 request_clear_region 14 51 aligned based (request_ptr), 14 52 2 header aligned like request_header, 14 53 2 by_name aligned, 14 54 3 extent aligned, 14 55 4 rows fixed bin, 14 56 4 columns fixed bin; 14 57 14 58 declare OP_INSERT_TEXT fixed bin initial (3) internal static options (constant); 14 59 14 60 declare 1 request_text aligned based (request_ptr), 14 61 2 header aligned like request_header, 14 62 2 by_name aligned, 14 63 3 text_ptr pointer, 14 64 3 text_length fixed bin (21); 14 65 14 66 declare request_text_string character (request_text.text_length) based (request_text.text_ptr); 14 67 14 68 declare OP_DELETE_CHARS fixed bin initial (6) internal static options (constant); 14 69 14 70 declare 1 request_delete_chars 14 71 aligned based (request_ptr), 14 72 2 header aligned like request_header, 14 73 2 by_name aligned, 14 74 3 count fixed bin; 14 75 14 76 declare OP_SCROLL_REGION fixed bin initial (7) internal static options (constant); 14 77 14 78 declare 1 request_scroll_region 14 79 aligned based (request_ptr), 14 80 2 header aligned like request_header, 14 81 2 by_name aligned, 14 82 3 start_line fixed bin, 14 83 3 n_lines fixed bin, 14 84 3 distance fixed bin; 14 85 14 86 declare OP_BELL fixed bin initial (8) internal static options (constant); 14 87 declare OP_GET_CHARS_ECHO fixed bin initial (9) internal static options (constant); 14 88 declare OP_GET_CHARS_NO_ECHO 14 89 fixed bin initial (10) internal static options (constant); 14 90 declare OP_WRITE_SYNC_GET_CHARS_NO_ECHO 14 91 fixed bin initial (11) internal static options (constant); 14 92 14 93 declare 1 request_read_status 14 94 aligned based (request_ptr), 14 95 2 header aligned like request_header, 14 96 2 by_name aligned, /* not used as such */ 14 97 3 returned_length 14 98 fixed bin, 14 99 3 event_channel fixed bin (71); 14 100 14 101 declare 1 request_read aligned based (request_ptr), 14 102 2 header aligned like request_header, 14 103 2 by_name aligned, 14 104 3 buffer_ptr pointer, 14 105 3 buffer_length fixed bin (21), 14 106 3 returned_length 14 107 fixed bin (21), 14 108 3 returned_break_flag 14 109 bit (1) aligned, 14 110 3 prompt_ptr pointer, 14 111 3 prompt_length fixed bin (21), 14 112 3 breaks bit (128) unaligned; 14 113 14 114 14 115 declare request_prompt character (request_read.prompt_length) based (request_read.prompt_ptr); 14 116 declare request_buffer character (request_read.buffer_length) based (request_read.buffer_ptr); 14 117 14 118 declare OP_GET_CURSOR_POSITION 14 119 fixed bin initial (12) internal static options (constant); 14 120 declare OP_READ_STATUS fixed bin initial (13) internal static options (constant); 14 121 declare OP_OVERWRITE_TEXT fixed bin initial (14) internal static options (constant); 14 122 declare OP_WRITE_RAW fixed bin initial (15) internal static options (constant); 14 123 declare OP_READ_ONE fixed bin initial (16) internal static options (constant); 14 124 14 125 /* use request_read, and return the character in the buffer there */ 14 126 /* pass the BLOCK flag in in break_flag. Well... */ 14 127 14 128 /* END INCLUDE FILE tc_operations_.incl.pl1 */ 1512 1513 15 1 /* BEGIN INCLUDE FiLE ... terminal_type_data.incl.pl1 */ 15 2 15 3 15 4 /****^ HISTORY COMMENTS: 15 5* 1) change(77-05-19,JStern), approve(), audit(), install(): 15 6* Created 15 7* Modified 8/14/79 by Robert Coren to convert to version 2 by adding 15 8* flow control parameters 15 9* 2) change(87-03-09,LJAdams), approve(87-04-03,MCR7646), 15 10* audit(87-05-05,Gilcrease), install(87-08-04,MR12.1-1056): 15 11* Change the ttd_version to ttd_version_3. Add the protocol field. 15 12* END HISTORY COMMENTS */ 15 13 15 14 15 15 dcl 1 terminal_type_data aligned based (ttdp), /* info structure for set_terminal_data order */ 15 16 2 version fixed bin, /* structure version */ 15 17 2 old_type fixed bin, /* old terminal type number, -1 => none */ 15 18 2 name char (32) unaligned, /* terminal type name */ 15 19 2 tables, 15 20 3 input_tr_ptr ptr, /* input translation table ptr */ 15 21 3 output_tr_ptr ptr, /* output translation table ptr */ 15 22 3 input_cv_ptr ptr, /* input conversion table ptr */ 15 23 3 output_cv_ptr ptr, /* output conversion table ptr */ 15 24 3 special_ptr ptr, /* special chars table ptr */ 15 25 3 delay_ptr ptr, /* delay table ptr */ 15 26 2 editing_chars unaligned, 15 27 3 erase char (1) unaligned, 15 28 3 kill char (1) unaligned, 15 29 2 framing_chars unaligned, 15 30 3 frame_begin char (1) unaligned, 15 31 3 frame_end char (1) unaligned, 15 32 2 flags unal, 15 33 3 keyboard_locking bit (1), /* ON to request keyboard locking and unlocking */ 15 34 3 input_timeout bit (1), 15 35 3 output_block_acknowledge bit (1), 15 36 3 mbz bit (15), 15 37 2 line_delimiter char (1) unal, 15 38 2 mbz bit (9) unal, 15 39 15 40 /* the remainder of this structure is only present if version is 2 or more */ 15 41 15 42 2 flow_control_chars unal, 15 43 3 input_suspend char (1), 15 44 3 input_resume char (1), 15 45 3 output_suspend_etb char (1), 15 46 3 output_resume_ack char (1), 15 47 2 output_buffer_size fixed bin, 15 48 15 49 /* the remainder of this structure is only present if version is 3 or more */ 15 50 2 protocol fixed bin; /* 0=NONE; 1=MOWSE */ 15 51 15 52 15 53 dcl ttdp ptr; /* ptr to terminal_type_data structure */ 15 54 dcl ttd_version_3 fixed bin int static options (constant) init (3); 15 55 /* current version of structure */ 15 56 15 57 15 58 /* END INCLUDE FILE ... terminal_type_data.incl.pl1 */ 1514 16 1 /* BEGIN INCLUDE FILE ... term_type_protocols.incl.pl1 */ 16 2 16 3 16 4 /****^ HISTORY COMMENTS: 16 5* 1) change(87-03-09,LJAdams), approve(87-04-03,MCR7646), 16 6* audit(87-05-05,Gilcrease), install(87-05-14,MR12.1-1029): 16 7* Created 16 8* 2) change(87-05-20,LJAdams), approve(87-05-20,MCR7699), 16 9* audit(87-06-30,RBarstad), install(87-08-04,MR12.1-1056): 16 10* Added support for MOWSE_FANSI protocol. 16 11* 3) change(87-06-15,LJAdams), approve(87-06-15,MCR7699), 16 12* audit(87-06-30,RBarstad), install(87-08-04,MR12.1-1056): 16 13* Changed name to term_type_protocols.incl.pl1 from 16 14* terminal_type_protocols.incl.pl1 which was too long. 16 15* END HISTORY COMMENTS */ 16 16 16 17 dcl NO_PROTOCOL fixed bin int static options (constant) init (0); 16 18 dcl MOWSE_PROTOCOL fixed bin int static options (constant) init (1); 16 19 dcl MOWSE_FANSI_PROTOCOL fixed bin int static options (constant) init (2); 16 20 16 21 dcl protocol_names (0:2) char (32) int static options (constant) init ( 16 22 "", /* 0 */ 16 23 "MOWSE", /* 1 */ 16 24 "MOWSE_FANSI"); /* 2 */ 16 25 16 26 dcl protocol_values (0:2) fixed bin int static options (constant) init ( 16 27 0, /* No Protocol */ 16 28 1, /* MOWSE */ 16 29 2); /* MOWSE_FANSI */ 16 30 16 31 /* END INCLUDE FILE ... term_type_protocols.incl.pl1 */ 1515 17 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 17 2 17 3 /* Created 5/25/77 by J. Stern */ 17 4 17 5 17 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 17 7 2 version fixed bin, /* version number of this sturcture */ 17 8 2 id char (4) unaligned, /* terminal id from answerback */ 17 9 2 term_type char (32) unaligned, /* terminal type name */ 17 10 2 line_type fixed bin, /* line type number */ 17 11 2 baud_rate fixed bin, 17 12 2 reserved (4) fixed bin; /* reserved for future use */ 17 13 17 14 17 15 dcl terminal_info_ptr ptr; 17 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 17 17 17 18 17 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 1516 1517 18 1 /* BEGIN INCLUDE FILE ... set_term_type_info.incl.pl1 */ 18 2 /* Created 7/18/77 by Robert Coren */ 18 3 /* Defines info structure for set_term_type order */ 18 4 18 5 dcl stti_version_1 fixed bin int static options (constant) init (1); 18 6 dcl sttip ptr; 18 7 18 8 dcl 1 set_term_type_info aligned based (sttip), 18 9 2 version fixed bin, 18 10 2 name char (32) unal, 18 11 2 flags unal, 18 12 3 send_initial_string bit (1), 18 13 3 set_modes bit (1), 18 14 3 ignore_line_type bit (1), 18 15 3 mbz bit (33); 18 16 18 17 /* END INCLUDE FILE ... set_term_type_info.incl.pl1 */ 1518 1519 1520 /* So we can do a set_window_status at reconnection and ttp change time */ 19 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 19 2 /* format: style3 */ 19 3 19 4 /* Modified 26 January 1982 by William York to add the set_more_handler 19 5* and reset_more_handler control orders. */ 19 6 /* Modified October 1982 by WMY to add set and get_token_characters, 19 7* set and get_more_prompt. */ 19 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 19 9* structure. */ 19 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 19 11* partial screen width windows. */ 19 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 19 13* This should be removed when window_info.incl.pl1 is created. */ 19 14 /* Modified 29 February 1984 by Barmar to add version 1 19 15* get_editor_key_bindings_info. */ 19 16 /* Modified 1 March 1984 by Barmar to add version 1 19 17* set_editor_key_bindings_info. */ 19 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 19 19* line_editor_key_bindings_info, which includes the name, description, and 19 20* info path */ 19 21 19 22 /* structure for the set_window_info and get_window_info 19 23* control orders. */ 19 24 19 25 dcl 1 window_position_info 19 26 based (window_position_info_ptr), 19 27 2 version fixed bin, 19 28 2 origin, 19 29 3 column fixed bin, 19 30 3 line fixed bin, 19 31 2 extent, 19 32 3 width fixed bin, 19 33 3 height fixed bin; 19 34 19 35 dcl (window_position_info_version, window_position_info_version_1) 19 36 fixed bin internal static init (1) options (constant); 19 37 dcl window_position_info_ptr 19 38 pointer; 19 39 19 40 /* structure for the set_window_status and get_window_status 19 41* control orders */ 19 42 19 43 declare window_status_info_ptr 19 44 pointer; 19 45 declare 1 window_status_info 19 46 aligned based (window_status_info_ptr), 19 47 2 version fixed bin, 19 48 2 status_string bit (36) aligned; /* string (window_status) */ 19 49 /* see window_status.incl.pl1 for the contents of this string */ 19 50 19 51 19 52 declare (window_status_version, window_status_version_1) 19 53 fixed bin internal static init (1) options (constant); 19 54 19 55 /* info structure for the set_more_responses and get_more_responses control 19 56* orders */ 19 57 19 58 19 59 dcl 1 more_responses_info 19 60 aligned based (more_responses_info_ptr), 19 61 2 version fixed bin, 19 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 19 63 2 n_noes fixed bin, 19 64 2 yeses char (32) unaligned, 19 65 2 noes char (32) unaligned; 19 66 19 67 dcl (more_responses_info_version_1, more_responses_version) 19 68 fixed bin internal static init (1) options (constant); 19 69 dcl more_responses_info_ptr 19 70 pointer; 19 71 19 72 /* structure for the set_break_table and get_break_table 19 73* control orders */ 19 74 19 75 declare break_table_ptr pointer; 19 76 declare 1 break_table_info aligned based (break_table_ptr), 19 77 2 version fixed bin, 19 78 2 breaks (0:127) bit (1) unaligned; 19 79 19 80 declare (break_table_info_version, break_table_info_version_1) 19 81 fixed bin init (1) internal static options (constant); 19 82 19 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 19 84 2 version fixed bin, 19 85 2 flags unaligned, 19 86 3 old_handler_valid 19 87 bit(1), 19 88 3 pad bit(35), 19 89 2 more_handler entry (pointer, bit(1) aligned), 19 90 2 old_more_handler entry (pointer, bit(1) aligned); 19 91 19 92 declare more_handler_info_ptr pointer; 19 93 19 94 declare (more_handler_info_version, more_handler_info_version_3) 19 95 fixed bin internal static options (constant) init (3); 19 96 19 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 19 98 2 version char(8), 19 99 2 token_character_count 19 100 fixed bin, 19 101 2 token_characters 19 102 char (128) unaligned; 19 103 19 104 declare token_characters_info_ptr pointer; 19 105 19 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 19 107 19 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 19 109 2 version char(8), 19 110 2 more_prompt char(80); 19 111 19 112 declare more_prompt_info_ptr pointer; 19 113 19 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 19 115 19 116 /* Line editor stuff ... */ 19 117 19 118 dcl line_editor_key_binding_info_ptr 19 119 pointer; 19 120 19 121 dcl line_editor_binding_count 19 122 fixed bin; 19 123 dcl line_editor_longest_sequence 19 124 fixed bin; 19 125 /* For each binding, action defines what to do for that sequence. Constants 19 126* are defined in window_editor_values.incl.pl1. Only if action is set to 19 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 19 128 19 129 dcl 1 line_editor_key_binding_info 19 130 aligned based (line_editor_key_binding_info_ptr), 19 131 2 version char(8), 19 132 2 binding_count fixed bin, 19 133 2 longest_sequence fixed bin, 19 134 2 bindings (line_editor_binding_count refer 19 135 (line_editor_key_binding_info.binding_count)), 19 136 3 sequence char(line_editor_longest_sequence refer 19 137 (line_editor_key_binding_info.longest_sequence)) varying, 19 138 3 action fixed bin, 19 139 3 numarg_action fixed binary, 19 140 3 editor_routine entry (pointer, fixed bin(35)), 19 141 3 name char (64) varying unaligned, 19 142 3 description char (256) varying unaligned, 19 143 3 info_path unaligned, 19 144 4 info_dir char (168), 19 145 4 info_entry char (32); 19 146 19 147 19 148 dcl line_editor_key_binding_info_version_3 19 149 char(8) static options (constant) init ("lekbi003"); 19 150 19 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 19 152 2 version char (8), 19 153 2 flags, 19 154 3 entire_state bit (1) unaligned, 19 155 3 mbz bit (35) unaligned, 19 156 2 key_binding_info_ptr ptr, 19 157 2 entire_state_ptr ptr; 19 158 19 159 dcl get_editor_key_bindings_info_ptr ptr; 19 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 19 161 19 162 dcl 1 set_editor_key_bindings_info aligned 19 163 based (set_editor_key_bindings_info_ptr), 19 164 2 version char (8), 19 165 2 flags, 19 166 3 replace bit (1) unaligned, 19 167 3 update bit (1) unaligned, 19 168 3 mbz bit (34) unaligned, 19 169 2 key_binding_info_ptr ptr; 19 170 19 171 dcl set_editor_key_bindings_info_ptr ptr; 19 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 19 173 19 174 /* This should be moved to window_info.incl.pl1 when that include file is 19 175* created. JR 2/1/84 */ 19 176 19 177 dcl 1 window_edit_line_info 19 178 based (window_edit_line_info_ptr), 19 179 2 version char (8), 19 180 2 line_ptr ptr, 19 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 19 182 19 183 dcl window_edit_line_info_version_1 19 184 char (8) static options (constant) init ("wedl0001"); 19 185 19 186 dcl window_edit_line_info_ptr 19 187 ptr; 19 188 19 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 1521 1522 20 1 /* begin include file window_status.incl.pl1 */ 20 2 /* Modified 28 March 1984 by Jon A. Rochlis to add terminal type change 20 3* and reconnection stuff. */ 20 4 /* format: style3 */ 20 5 /* interrupts that an application can recieve from a window */ 20 6 20 7 declare window_status_string 20 8 bit (36) unaligned; 20 9 20 10 declare 1 window_status aligned, 20 11 2 screen_invalid bit (1) unaligned, 20 12 2 async_change bit (1) unaligned, 20 13 2 ttp_change bit (1) unaligned, 20 14 2 reconnection bit (1) unaligned, 20 15 2 pad bit (32) unaligned; 20 16 20 17 declare ( 20 18 W_STATUS_SCREEN_INVALID 20 19 init ("1"b), 20 20 W_STATUS_ASYNC_EVENT 20 21 init ("01"b), 20 22 W_STATUS_TTP_CHANGE 20 23 init ("001"b), 20 24 W_STATUS_RECONNECTION 20 25 init ("0001"b) 20 26 ) bit (36) aligned internal static options (constant); 20 27 20 28 /* end include file window_status.incl.pl1 */ 1523 1524 21 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 21 2 /* format: style3 */ 21 3 21 4 /* These constants are to be used for the flags argument of sub_err_ */ 21 5 /* They are just "string (condition_info_header.action_flags)" */ 21 6 21 7 declare ( 21 8 ACTION_CAN_RESTART init (""b), 21 9 ACTION_CANT_RESTART init ("1"b), 21 10 ACTION_DEFAULT_RESTART 21 11 init ("01"b), 21 12 ACTION_QUIET_RESTART 21 13 init ("001"b), 21 14 ACTION_SUPPORT_SIGNAL 21 15 init ("0001"b) 21 16 ) bit (36) aligned internal static options (constant); 21 17 21 18 /* End include file */ 1525 1526 22 1 /* BEGIN INCLUDE FILE terminal_capabilities.incl.pl1 BIM May 1981 */ 22 2 /* format: style3 */ 22 3 dcl 1 capabilities_info aligned based (capabilities_info_ptr), 22 4 2 version fixed bin, 22 5 2 screensize, 22 6 3 columns fixed bin, 22 7 3 rows fixed bin, 22 8 2 flags, 22 9 3 scroll_region bit (1) unal, 22 10 3 insert_chars bit (1) unal, 22 11 3 insert_mode bit (1) unal, 22 12 3 delete_chars bit (1) unal, 22 13 3 overprint bit (1) unal, 22 14 3 pad bit (31) unal, 22 15 2 line_speed fixed bin; /* chars per sec */ 22 16 22 17 dcl (capabilities_info_version_1, capabilities_info_version) 22 18 fixed bin internal static init (1) options (constant); 22 19 dcl capabilities_info_ptr 22 20 pointer; 22 21 22 22 /* END INCLUDE FILE terminal_capabilities.incl.pl1 */ 1527 1528 23 1 /* BEGIN INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 23 2 23 3 /****^ HISTORY COMMENTS: 23 4* 1) change(86-05-17,Smith), approve(86-12-16,MCR7580), 23 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 23 6* Created to define MOWSE message formats. 23 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 23 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 23 9* Approved. 23 10* 3) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 23 11* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 23 12* Changes to support async call channels. 23 13* END HISTORY COMMENTS */ 23 14 23 15 /* Message Channels */ 23 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 23 17 dcl BG fixed bin int static options (constant) init (0); 23 18 /* Fore ground */ 23 19 dcl FG fixed bin int static options (constant) init (1); 23 20 /* Back ground */ 23 21 23 22 /* Message types: 23 23* 23 24*Each intersystem message is labelled with one of the following types. Upon 23 25*reciept of the message suitable action is undertaken. This scheme was 23 26*introduced to allow the transmission of messsages longer than the maximum 23 27*packet size. 23 28**/ 23 29 23 30 /* Templates for the various messages used throughout the mowse environment. 23 31* Non-allocatable */ 23 32 23 33 dcl message_len fixed bin init (6); 23 34 dcl message_ptr ptr; 23 35 23 36 /* expected format of message */ 23 37 23 38 dcl 01 input_message based (message_ptr), 23 39 02 header, 23 40 03 system char (1) unal, 23 41 03 major char (1) unal, 23 42 03 minor char (1) unal, 23 43 03 source_system char (1) unal, 23 44 03 source_major char (1) unal, 23 45 02 data char (message_len - 5) unal; 23 46 23 47 /* expected format of message to be handled by mowse internal execute command */ 23 48 23 49 dcl 01 execom_message based (message_ptr), 23 50 02 header, 23 51 03 system char (1) unal, 23 52 03 major char (1) unal, 23 53 03 minor char (1) unal, 23 54 03 source_system char (1) unal, 23 55 03 source_major char (1) unal, 23 56 02 data, 23 57 03 cmd_id fixed bin (17) unal, 23 58 03 command char (message_len - 7) unal; 23 59 23 60 /* expected format of message recieved when a request to alter a CAT table 23 61* is made by a remote system */ 23 62 23 63 dcl 01 alter_cat_message based (message_ptr), 23 64 02 header, 23 65 03 system char (1) unal, 23 66 03 major char (1) unal, 23 67 03 minor char (1) unal, 23 68 03 source_system char (1) unal, 23 69 03 source_major char (1) unal, 23 70 02 data, 23 71 03 major char unal, 23 72 03 major_name char (CAPABILITY_NAME_LENGTH) unal; 23 73 23 74 /* Template used to parse message recieved from some remote system. */ 23 75 23 76 dcl 01 event_message based (message_ptr), 23 77 02 header, 23 78 03 system char (1) unal, 23 79 03 major char (1) unal, 23 80 03 msg_type char (1) unal; 23 81 23 82 /* format of message of MORE type */ 23 83 23 84 dcl 01 request_more_message 23 85 based (message_ptr), 23 86 02 header, 23 87 03 system char (1) unal, 23 88 03 major char (1) unal, 23 89 03 more char (1) unal, 23 90 03 source_system char (1) unal, 23 91 03 source_major char (1) unal, 23 92 03 source_minor char (1) unal; 23 93 23 94 /* format of message of CONTINUE type */ 23 95 23 96 dcl 01 more_remaining_message 23 97 based (message_ptr), 23 98 02 header, 23 99 03 system char (1) unal, 23 100 03 major char (1) unal, 23 101 03 continue char (1) unal, 23 102 03 minor char (1) unal, 23 103 03 source_system char (1) unal, 23 104 03 source_major char (1) unal, 23 105 02 data, 23 106 03 data_buf char (message_len - 6) unal; 23 107 23 108 /* format of message of LAST type */ 23 109 23 110 dcl 01 last_message based (message_ptr), 23 111 02 header, 23 112 03 system char (1) unal, 23 113 03 major char (1) unal, 23 114 03 minor char (1) unal, 23 115 03 source_system char (1) unal, 23 116 03 source_major char (1) unal, 23 117 02 data, 23 118 03 data_buf char (message_len - 5) unal; 23 119 23 120 /* Execute_command_reply message format */ 23 121 23 122 dcl 01 execom_reply_msg based (message_ptr), 23 123 02 header, 23 124 03 system char (1) unal, 23 125 03 major char (1) unal, 23 126 03 minor char (1) unal, 23 127 03 source_system char (1) unal, 23 128 03 source_major char (1) unal, 23 129 02 data, 23 130 03 cmd_id fixed bin unal, 23 131 03 status char unal; 23 132 23 133 /* Used to manage partial messages destined for any application */ 23 134 23 135 dcl msg_node_ptr ptr; 23 136 dcl 01 message_node based (msg_node_ptr), 23 137 02 major fixed bin, 23 138 02 partial_msg_list_ptr 23 139 ptr, 23 140 02 next_node ptr, 23 141 02 prev_node ptr, 23 142 02 last_part_msg ptr; 23 143 23 144 dcl part_msg_ptr ptr; 23 145 dcl 01 partial_message based (part_msg_ptr), 23 146 02 msg_ptr ptr, 23 147 02 msg_len fixed bin, 23 148 02 next_msg ptr; 23 149 23 150 23 151 dcl part_msg_length fixed bin; 23 152 dcl part_msg char (part_msg_length) based; 23 153 23 154 /* Trace information structure */ 23 155 dcl 01 trace_message_info, 23 156 02 direction fixed bin, 23 157 02 from_system fixed bin, 23 158 02 from_major fixed bin, 23 159 02 dest_system fixed bin, 23 160 02 dest_major fixed bin, 23 161 02 dest_minor fixed bin, 23 162 02 msg_type fixed bin, 23 163 02 message char (PACKET_SIZE) var; 23 164 23 165 /* END INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 1529 1530 24 1 /* BEGIN INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 24 2 24 3 /****^ HISTORY COMMENTS: 24 4* 1) change(86-06-15,Flegel), approve(86-12-16,MCR7580), 24 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 24 6* Created for control support for mowse_io_. 24 7* 2) change(86-08-01,Flegel), approve(86-12-16,MCR7580), 24 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 24 9* Changed version fields to char (8) and 24 10* installed version constant. 24 11* 3) change(86-10-08,Flegel), approve(86-12-16,MCR7580), 24 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 24 13* Added flush_subchannel_info structure. 24 14* 4) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 24 15* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 24 16* Approved. 24 17* 5) change(86-12-05,Flegel), approve(86-12-05,MCR7580), 24 18* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 24 19* Added mowse_io_set_video_mode_info structure. 24 20* 6) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 24 21* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 24 22* Changes to support async call channels. 24 23* END HISTORY COMMENTS */ 24 24 24 25 /* : Version number */ 24 26 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 24 27 dcl mowse_io_info_version_1 24 28 char (8) int static options (constant) 24 29 init ("miover_1"); 24 30 24 31 /* : Mowse store info structure */ 24 32 dcl mowse_io_store_info_ptr 24 33 ptr; 24 34 dcl 01 mowse_io_store_info based (mowse_io_store_info_ptr), 24 35 02 version char (8), 24 36 02 info_ptr ptr; /* Pointer to mowse_info_ structure */ 24 37 24 38 /* : Mowse info structure */ 24 39 dcl mowse_io_info_ptr ptr; 24 40 dcl 01 mowse_io_info based (mowse_io_info_ptr), 24 41 02 version char (8), 24 42 02 mcb_ptr ptr, /* Pointer to mowse_mcb */ 24 43 02 info_ptr ptr; /* Pointer to Mowse information (CATs etc.) */ 24 44 24 45 /* : Control info overlay for debug_on */ 24 46 dcl mowse_io_debug_info_ptr 24 47 ptr; 24 48 dcl 01 mowse_io_debug_info based (mowse_io_debug_info_ptr), 24 49 02 version char (8), 24 50 02 segment_name char (512) var; /* Debug file name */ 24 51 24 52 /* : Control info overlay for get_terminal_emulator_state */ 24 53 dcl mowse_io_terminal_state_ptr 24 54 ptr; 24 55 dcl 01 mowse_io_terminal_state 24 56 based (mowse_io_terminal_state_ptr), 24 57 02 version char (8), 24 58 02 state bit (1) unal, /* WSTERM state */ 24 59 02 mbz bit (35) unal; 24 60 24 61 /* : Control info overlay for send_message and send_local_message */ 24 62 dcl mowse_io_message_ptr ptr; 24 63 dcl 01 mowse_io_message based (mowse_io_message_ptr), 24 64 02 version char (8), 24 65 02 channel fixed bin, /* Channel of message */ 24 66 02 io_message_ptr ptr, /* Pointer to the nonvarying message */ 24 67 02 io_message_len fixed bin (21); /* Length of message */ 24 68 24 69 /* : Control info overlay for put_to_sleep */ 24 70 dcl mowse_io_sleep_info_ptr 24 71 ptr; 24 72 dcl 01 mowse_io_sleep_info based (mowse_io_sleep_info_ptr), 24 73 02 version char (8), 24 74 02 major_index fixed bin, /* CAT index of sleeper */ 24 75 02 sleep_seconds fixed bin; /* Sleep interval */ 24 76 24 77 /* : Control info for flush_subchannel */ 24 78 dcl mowse_io_flush_subchannel_info_ptr 24 79 ptr; 24 80 dcl 01 mowse_io_flush_subchannel_info 24 81 based (mowse_io_flush_subchannel_info_ptr), 24 82 02 version char (8), 24 83 02 subchannel fixed bin; /* The subchannel to be flushed (BG/FG) */ 24 84 24 85 /* : Control info to set the video mode */ 24 86 dcl mowse_io_set_video_mode_info_ptr 24 87 ptr; 24 88 dcl 01 mowse_io_set_video_mode_info 24 89 based (mowse_io_set_video_mode_info_ptr), 24 90 02 version char (8), 24 91 02 mode bit (1) unal, /* On or off */ 24 92 02 mbz bit (35) unal; 24 93 24 94 /* END INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 1531 1532 25 1 /* BEGIN INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 25 2 25 3 /****^ HISTORY COMMENTS: 25 4* 1) change(86-09-17,Flegel), approve(86-12-16,MCR7580), 25 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 25 6* Created. 25 7* 2) change(86-10-03,Flegel), approve(86-12-16,MCR7580), 25 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 25 9* Combined mowse_minor_caps.incl.pl1 and 25 10* mowse.incl.pl1 so that programmer only needs include mowse.incl.pl1 25 11* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 25 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 25 13* Approved. 25 14* 4) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 25 15* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 25 16* Changes to support async call channels. 25 17* END HISTORY COMMENTS */ 25 18 25 19 /* Name of MOWSE temp seg for data */ 25 20 25 21 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 25 22 dcl temp_seg_name char (6) init ("MOWSE_"); 25 23 25 24 /* Version number */ 25 25 25 26 dcl MOWSE_VERSION_ char (8) int static options (constant) init ("version1"); 25 27 25 28 /* System identification */ 25 29 25 30 dcl LOCAL_SYSTEM fixed bin int static options (constant) init (32); 25 31 dcl REMOTE_SYSTEM fixed bin int static options (constant) init (33); 25 32 25 33 /* Status request return codes */ 25 34 25 35 dcl STATUS_SUCCESS fixed bin (8) int static options (constant) 25 36 init (32); 25 37 dcl STATUS_FAILED fixed bin (8) int static options (constant) 25 38 init (33); 25 39 25 40 /* Input/output capability buffer size limits */ 25 41 25 42 dcl MINIMUM_BUFFER_SIZE fixed bin int static options (constant) init (128); 25 43 dcl MAXIMUM_BUFFER_SIZE fixed bin int static options (constant) init (65536); 25 44 dcl MAXIMUM_BG_SIZE fixed bin int static options (constant) init (512); 25 45 25 46 /* Packet size (communication) constants */ 25 47 25 48 dcl PACKET_SIZE fixed bin int static options (constant) init (124); 25 49 dcl MAXIMUM_PACKET_SIZE fixed bin int static options (constant) init (118); 25 50 25 51 /* Query message constants */ 25 52 25 53 dcl SEND_QUERY fixed bin int static options (constant) init (128); 25 54 dcl ACCEPT fixed bin int static options (constant) init (32); 25 55 dcl REJECT fixed bin int static options (constant) init (33); 25 56 25 57 /* Trace information constants */ 25 58 25 59 dcl RECEIVE fixed bin int static options (constant) init (1); 25 60 dcl SEND fixed bin int static options (constant) init (0); 25 61 25 62 /* Limits on dedicated minor capabilities */ 25 63 25 64 dcl MINIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (32); 25 65 dcl MAXIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (63); 25 66 dcl MINIMUM_USER_MINOR fixed bin int static options (constant) init (64); 25 67 dcl MAXIMUM_USER_MINOR fixed bin int static options (constant) init (127); 25 68 25 69 /* Dedicated Minor Capabilities */ 25 70 25 71 dcl LAST fixed bin int static options (constant) init (0); 25 72 dcl EXECUTE_COMMAND_REPLY fixed bin int static options (constant) init (32); 25 73 dcl EXECUTE_CAPABILITY_REPLY 25 74 fixed bin int static options (constant) init (33); 25 75 dcl FAIL_CAPABILITY fixed bin int static options (constant) init (33); 25 76 dcl INTERNAL fixed bin int static options (constant) init (32); 25 77 dcl EXECUTE_COMMAND fixed bin int static options (constant) init (34); 25 78 dcl ADD_TO_REMOTE_CAT fixed bin int static options (constant) init (35); 25 79 dcl DELETE_FROM_REMOTE_CAT fixed bin int static options (constant) init (36); 25 80 dcl SUSPEND_APPLICATION fixed bin int static options (constant) init (37); 25 81 dcl RESUME_APPLICATION fixed bin int static options (constant) init (38); 25 82 dcl TERMINATE_APPLICATION fixed bin int static options (constant) init (39); 25 83 dcl RESET_APPLICATION fixed bin int static options (constant) init (40); 25 84 dcl RESET_REPLY fixed bin int static options (constant) init (41); 25 85 dcl WAKE_UP fixed bin int static options (constant) init (42); 25 86 dcl STATUS fixed bin int static options (constant) init (43); 25 87 dcl OVERFLOWED_BUFFER fixed bin int static options (constant) init (44); 25 88 dcl SYSTEM_ERROR fixed bin int static options (constant) init (45); 25 89 dcl QUERY_REPLY fixed bin int static options (constant) init (46); 25 90 dcl RESPONSE_CONNECT fixed bin int static options (constant) init (47); 25 91 dcl RESPONSE_DISCONNECT fixed bin int static options (constant) init (48); 25 92 dcl REQUEST_CONNECT fixed bin int static options (constant) init (49); 25 93 dcl REQUEST_DISCONNECT fixed bin int static options (constant) init (50); 25 94 dcl CONTINUE fixed bin int static options (constant) init (51); 25 95 dcl MORE fixed bin int static options (constant) init (52); 25 96 dcl SET_SLEEP_FLAG fixed bin int static options (constant) init (53); 25 97 dcl RESET_SLEEP_FLAG fixed bin int static options (constant) init (54); 25 98 dcl SET_SUSPEND fixed bin int static options (constant) init (55); 25 99 dcl RESET_SUSPEND fixed bin int static options (constant) init (56); 25 100 dcl STATUS_REPLY fixed bin int static options (constant) init (57); 25 101 25 102 /* Foreground */ 25 103 25 104 dcl FG_CONTROL_MESSAGE fixed bin int static options (constant) init (33); 25 105 dcl FG_BREAK fixed bin int static options (constant) init (34); 25 106 dcl FG_TERMINAL_DATA fixed bin int static options (constant) init (35); 25 107 dcl FG_MORE_DATA fixed bin int static options (constant) init (36); 25 108 dcl PUT_TO_BACKGROUND_BUFFER 25 109 fixed bin int static options (constant) init (37); 25 110 dcl PUT_TO_QUERY_MESSAGE_BUFFER 25 111 fixed bin int static options (constant) init (38); 25 112 25 113 /* END INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 1533 26 1 /* BEGIN INCLUDE FILE mcs_echo_neg.incl.pl1 Bernard Greenberg 1/20/79 */ 26 2 26 3 26 4 26 5 /****^ HISTORY COMMENTS: 26 6* 1) change(86-04-23,Coren), approve(86-04-23,MCR7300), 26 7* audit(86-05-19,Beattie), install(86-07-08,MR12.0-1089): 26 8* Changed version to 2, increased size of break table, 26 9* included named constant for break table size. 26 10* END HISTORY COMMENTS */ 26 11 26 12 26 13 /* This include file defines the callable entrypoints and argument data 26 14* structures for ring 0 echo negotiation */ 26 15 26 16 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 26 17 dcl echo_neg_datap ptr; 26 18 dcl echo_neg_data_version_2 fixed bin static options (constant) init (2); 26 19 dcl ECHO_NEG_BREAK_TABLE_SIZE 26 20 fixed bin internal static options (constant) init (255); 26 21 26 22 dcl 1 echo_neg_data based (echo_neg_datap) aligned, 26 23 /* Echo negotiation data */ 26 24 2 version fixed bin, 26 25 2 break (0:255) bit (1) unaligned, 26 26 /* Break table, 1 = break */ 26 27 2 pad bit (7) unaligned, 26 28 2 rubout_trigger_chars (2) unaligned, /* Characters that cause rubout action */ 26 29 3 char char (1) unaligned, 26 30 2 rubout_sequence_length 26 31 fixed bin (4) unsigned unaligned, 26 32 /* Length of rubout sequence, output */ 26 33 2 rubout_pad_count fixed bin (4) unsigned unaligned, 26 34 /* Count of pads needed */ 26 35 2 buffer_rubouts bit (1) unaligned, /* 1 = put rubouts and rubbed out in buffer */ 26 36 2 rubout_sequence char (12) unaligned; /* Actual rubout sequence */ 26 37 26 38 /*** VERSION 1 STRUCTURE DECLARATION FOR COMPATIBILITY (TO BE REMOVED FOR MR12) ***/ 26 39 26 40 dcl echo_neg_data_version_1 fixed bin static options (constant) init (1); 26 41 26 42 dcl 1 v1_echo_neg_data based (echo_neg_datap) aligned, 26 43 /* Echo negotiation data */ 26 44 2 version fixed bin, 26 45 2 break (0:127) bit (1) unaligned, 26 46 /* Break table, 1 = break */ 26 47 2 pad bit (7) unaligned, 26 48 2 rubout_trigger_chars (2) unaligned, /* Characters that cause rubout action */ 26 49 3 char char (1) unaligned, 26 50 2 rubout_sequence_length 26 51 fixed bin (4) unsigned unaligned, 26 52 /* Length of rubout sequence, output */ 26 53 2 rubout_pad_count fixed bin (4) unsigned unaligned, 26 54 /* Count of pads needed */ 26 55 2 buffer_rubouts bit (1) unaligned, /* 1 = put rubouts and rubbed out in buffer */ 26 56 2 rubout_sequence char (12) unaligned; /* Actual rubout sequence */ 26 57 /*** END VERSION 1 STRUCTURE ****/ 26 58 26 59 dcl ( 26 60 hcs_$tty_read_echoed, 26 61 hcs_$echo_negotiate_get_chars 26 62 ) entry (fixed bin, ptr, fixed bin (21), fixed bin (21), fixed bin (21), fixed bin (21), 26 63 fixed bin, fixed bin, fixed bin (35)); 26 64 /* 26 65* call hcs_$echo_negotiate_get_chars 26 66* (devx, datap, offset, nelem, NRETURNED, NECHOED_RETURNED, screen_left, STATE, CODE); 26 67* */ 26 68 26 69 /* END INCLUDE FILE mcs_echo_neg.incl.pl1 */ 1534 1535 end tc_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/09/87 1349.9 tc_.pl1 >spec>install>1102>tc_.pl1 648 1 03/29/82 1006.8 foreign_terminal_data.incl.pl1 >ldd>include>foreign_terminal_data.incl.pl1 649 2 03/19/81 1206.8 mode_string_info.incl.pl1 >ldd>include>mode_string_info.incl.pl1 1153 3 01/06/87 1357.0 tc_io_attach_data_.incl.pl1 >ldd>include>tc_io_attach_data_.incl.pl1 3-54 4 06/29/79 1728.0 event_wait_channel.incl.pl1 >ldd>include>event_wait_channel.incl.pl1 1154 5 09/12/84 0916.7 tc_desk_info_.incl.pl1 >ldd>include>tc_desk_info_.incl.pl1 1155 6 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 1419 7 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 1420 8 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 1421 9 01/06/87 1357.0 tc_disconnect_info.incl.pl1 >ldd>include>tc_disconnect_info.incl.pl1 1422 10 07/18/81 1100.0 sub_error_info.incl.pl1 >ldd>include>sub_error_info.incl.pl1 1507 11 08/06/87 0913.5 net_event_message.incl.pl1 >ldd>include>net_event_message.incl.pl1 1508 12 08/11/81 1106.2 tty_video_tables.incl.pl1 >ldd>include>tty_video_tables.incl.pl1 1510 13 01/06/87 1357.0 tc_data_.incl.pl1 >ldd>include>tc_data_.incl.pl1 1512 14 03/12/85 0930.8 tc_operations_.incl.pl1 >ldd>include>tc_operations_.incl.pl1 1514 15 08/06/87 0913.5 terminal_type_data.incl.pl1 >ldd>include>terminal_type_data.incl.pl1 1515 16 08/06/87 0913.5 term_type_protocols.incl.pl1 >ldd>include>term_type_protocols.incl.pl1 1516 17 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 1518 18 09/01/77 1359.3 set_term_type_info.incl.pl1 >ldd>include>set_term_type_info.incl.pl1 1521 19 09/12/84 0916.7 window_control_info.incl.pl1 >ldd>include>window_control_info.incl.pl1 1523 20 09/12/84 0916.7 window_status.incl.pl1 >ldd>include>window_status.incl.pl1 1525 21 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 1527 22 03/27/82 0429.7 terminal_capabilities.incl.pl1 >ldd>include>terminal_capabilities.incl.pl1 1529 23 08/10/87 1335.9 mowse_messages.incl.pl1 >ldd>include>mowse_messages.incl.pl1 1531 24 08/10/87 1336.7 mowse_io_control_info.incl.pl1 >ldd>include>mowse_io_control_info.incl.pl1 1533 25 08/10/87 1336.7 mowse.incl.pl1 >ldd>include>mowse.incl.pl1 1534 26 07/10/86 2015.0 mcs_echo_neg.incl.pl1 >ldd>include>mcs_echo_neg.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. ABS_POS constant fixed bin(17,0) initial dcl 12-54 ref 685 CURSOR_DOWN constant fixed bin(17,0) initial dcl 12-54 ref 685 685 CURSOR_LEFT constant fixed bin(17,0) initial dcl 12-54 ref 685 CURSOR_RIGHT constant fixed bin(17,0) initial dcl 12-54 ref 685 685 CURSOR_UP constant fixed bin(17,0) initial dcl 12-54 ref 685 C_ptr parameter pointer dcl 490 in procedure "tc_" set ref 488 494* C_ptr parameter pointer dcl 499 in procedure "get_capabilities_proc" ref 497 501 Channel parameter char unaligned dcl 157 set ref 217 228 230* 232 238* 1241* Code parameter fixed bin(35,0) dcl 1304 in procedure "set_term_type_proc" set ref 1300 1309* 1310 1313* 1314 1317* 1318 1321* 1325 1331* 1332 Code parameter fixed bin(35,0) dcl 369 in procedure "request_proc" set ref 366 373* 375 378* 379 382* 386* Code parameter fixed bin(35,0) dcl 347 in procedure "init_ttp_info_3" set ref 344 349* Code parameter fixed bin(35,0) dcl 157 in procedure "tc_" set ref 217 230* 238* 241 255* 256 263* 264 270* 271 289 298 301* 302 304* 305* 358 362* 363* 392 399* 417* 431 433* 443* 444 450 454* 472* 476* 477 488 493* 503* 526 532* 1067* 1106* 1140* 1158 1176* 1217* 1221* 1224* 1229* 1237* 1238* 1239 1241* 1243* 1449* 1464* 1487* 1489 1489* Code parameter fixed bin(35,0) dcl 314 in procedure "init_ttp_info_1" set ref 311 316* 317 320* 321 Code parameter fixed bin(35,0) dcl 1250 in procedure "reconnection_proc" set ref 1245 1263* 1264 1265* 1270* 1274 1279* 1280 Code parameter fixed bin(35,0) dcl 331 in procedure "init_ttp_info_2" ref 328 Col parameter fixed bin(17,0) dcl 395 in procedure "tc_" set ref 392 401* 450 456* Col parameter fixed bin(17,0) dcl 408 in procedure "check_in_window_proc" ref 404 412 412 425 Col parameter fixed bin(17,0) dcl 464 in procedure "resize_window_proc" ref 459 467 467 482 DELETE_CHARS 000065 constant fixed bin(17,0) initial dcl 12-54 set ref 518 629* DELETE_LINES 000063 constant fixed bin(17,0) initial dcl 12-54 set ref 514 623* DSA_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 11-35 ref 229 699 735 785 960 1431 END_INSERT_CHARS constant fixed bin(17,0) initial dcl 12-54 ref 517 Event parameter fixed bin(71,0) dcl 157 set ref 217 230* 238* 248 1241* FG constant fixed bin(17,0) initial dcl 23-19 ref 1235 FOREIGN_TERMINAL_DATA_VERSION_1 000026 constant char(8) initial dcl 1-4 ref 607 HOME constant fixed bin(17,0) initial dcl 12-54 ref 685 INITIAL_BREAKTEST 007371 constant bit(128) initial unaligned dcl 204 ref 261 INITIAL_MODES 000131 constant char(128) initial unaligned dcl 207 set ref 725* INSERT_CHARS constant fixed bin(17,0) initial dcl 12-54 set ref 516 628* INSERT_LINES 000064 constant fixed bin(17,0) initial dcl 12-54 set ref 514 622* Info_ptr parameter pointer dcl 529 set ref 526 532* 1158 1176* 1182* 1185* 1189 1195 1200 1205 1215 1243* Iocbp parameter pointer dcl 1148 ref 1141 1158 MCS_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 11-34 ref 237 MOWSE_DEVICE 000126 constant char(9) initial unaligned dcl 211 ref 232 MOWSE_INITIAL_MODES 000066 constant char(128) initial unaligned dcl 213 set ref 723* MOWSE_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 11-36 ref 233 269 305 713 723 795 819 824 962 1437 MOWSE_ptr parameter pointer dcl 157 ref 217 234 N_cols parameter fixed bin(17,0) dcl 395 in procedure "tc_" set ref 392 401* 450 456* N_cols parameter fixed bin(17,0) dcl 408 in procedure "check_in_window_proc" ref 404 412 412 426 N_cols parameter fixed bin(17,0) dcl 465 in procedure "resize_window_proc" ref 459 467 467 483 N_rows parameter fixed bin(17,0) dcl 407 in procedure "check_in_window_proc" ref 404 412 412 424 N_rows parameter fixed bin(17,0) dcl 394 in procedure "tc_" set ref 392 401* 450 456* N_rows parameter fixed bin(17,0) dcl 463 in procedure "resize_window_proc" ref 459 467 467 481 OP_CLEAR_SCREEN_NO_OPT constant fixed bin(17,0) initial dcl 14-47 ref 1362 OP_WRITE_RAW constant fixed bin(17,0) initial dcl 14-122 ref 758 Order parameter char unaligned dcl 528 set ref 526 532* 1158 1176 1179 1182 1185 1188 1194 1198 1204 1208 1210 1213 1229 1232 1234 1243* PACKET_SIZE constant fixed bin(17,0) initial dcl 25-48 ref 23-155 REQUEST_SENTINEL 000062 constant char(4) initial dcl 14-20 ref 1358 R_ptr parameter pointer dcl 368 ref 366 370 Reconnection_flag parameter bit(1) unaligned dcl 157 ref 217 220 283 Request_ptr parameter pointer dcl 157 set ref 358 363* Row parameter fixed bin(17,0) dcl 462 in procedure "resize_window_proc" ref 459 467 467 480 Row parameter fixed bin(17,0) dcl 407 in procedure "check_in_window_proc" ref 404 412 412 423 Row parameter fixed bin(17,0) dcl 394 in procedure "tc_" set ref 392 401* 450 456* TC_data_ptr parameter pointer dcl 157 set ref 217 226 292* 298 358 361 392 398 431 435 450 453 488 492 526 531 890 893 923* 932 935 Terminal_type parameter char unaligned dcl 157 set ref 217 298 576 576* UNMASK_ALL 000232 constant bit(36) initial dcl 203 set ref 790* WSI 001012 automatic structure level 1 dcl 1337 in procedure "set_term_type_proc" set ref 1343 1343 WSI 001000 automatic structure level 1 dcl 1285 in procedure "reconnection_proc" set ref 1292 1292 W_STATUS_RECONNECTION constant bit(36) initial dcl 20-17 ref 1289 W_STATUS_SCREEN_INVALID constant bit(36) initial dcl 20-17 ref 1289 1340 W_STATUS_TTP_CHANGE constant bit(36) initial dcl 20-17 ref 1289 1340 Window_id parameter bit(36) dcl 409 in procedure "check_in_window_proc" set ref 404 422* Window_id parameter bit(36) dcl 157 in procedure "tc_" set ref 392 401* 431 436* 450 456* Window_id parameter bit(36) dcl 441 in procedure "check_out_window_proc" set ref 439 443* Window_id parameter bit(36) dcl 461 in procedure "resize_window_proc" set ref 459 476* Window_iocb_ptr parameter pointer dcl 410 in procedure "check_in_window_proc" ref 404 427 Window_iocb_ptr parameter pointer dcl 396 in procedure "tc_" set ref 392 401* X_code 000101 automatic fixed bin(35,0) dcl 153 set ref 609* 610 action_flags 2 based structure level 2 dcl 8-6 actual_iocb_ptr 12 based pointer level 2 dcl 6-6 ref 1141 actual_iocbp 000154 automatic pointer dcl 1149 set ref 1141* 1142 addr builtin function dcl 198 ref 552 552 558 558 609 609 613 708 708 715 715 717 717 765 767 767 848 1237 1237 1292 1292 1343 1343 1367 1367 1429 1429 1472 1472 after builtin function dcl 198 ref 881 882 area_ptr 2 000370 automatic pointer level 2 dcl 650 set ref 608* async_detach 243(07) based bit(1) level 3 packed unaligned dcl 3-20 ref 1459 async_same_window 262 based bit(72) level 4 packed unaligned dcl 13-21 set ref 251* attach_data based structure level 1 dcl 3-20 attach_data_ptr 16 based pointer level 2 in structure "iocb" dcl 6-6 in procedure "tc_" ref 1142 attach_data_ptr 000160 automatic pointer dcl 3-19 in procedure "tc_" set ref 1142* 1161 1170 1170 1172 1172 1208 1210 1279* 1382 1382 1382 1386 1386 1432 1438 1443 1448 1459 1479 1480 1486 1487 1487 1487 1487 baud_rate 000362 automatic fixed bin(17,0) dcl 573 in procedure "get_video_data" set ref 576* 578* 588* 599 baud_rate parameter fixed bin(17,0) dcl 540 in procedure "get_terminal_info" set ref 536 545* 562* baud_rate parameter fixed bin(17,0) dcl 659 in procedure "get_video_info_ptr" set ref 655 663* baud_rate 13 000334 automatic fixed bin(17,0) level 2 in structure "ti" dcl 543 in procedure "get_terminal_info" set ref 558* 562 bin builtin function dcl 198 ref 996 bit builtin function dcl 198 ref 981 981 blocked_windows 264 based bit(36) array level 4 dcl 13-21 set ref 253* boolean_value 11(03) based bit(1) level 3 packed unaligned dcl 2-16 ref 620 626 break 1 000430 automatic bit(1) array level 2 packed unaligned dcl 702 set ref 705* breaktest 24 based bit(128) level 2 packed unaligned dcl 13-21 set ref 261* buffer_length 14 based fixed bin(21,0) level 3 dcl 14-101 ref 1084 by_name 12 based structure level 2 in structure "request_scroll_region" dcl 14-78 in procedure "tc_" by_name 12 000656 automatic structure level 2 in structure "tct" dcl 748 in procedure "send_initial_string" by_name 12 based structure level 2 in structure "request_delete_chars" dcl 14-70 in procedure "tc_" by_name 12 based structure level 2 in structure "request_text" dcl 14-60 in procedure "tc_" by_name 12 001022 automatic structure level 2 in structure "rcr" dcl 1356 in procedure "clear_screen_proc" by_name 12 based structure level 2 in structure "request_read" dcl 14-101 in procedure "tc_" by_name 12 based structure level 2 in structure "request_clear_region" dcl 14-50 in procedure "tc_" cant_restart 2 based bit(1) level 3 packed unaligned dcl 8-6 set ref 1483* capabilities_info based structure level 1 dcl 22-3 capabilities_info_ptr 000214 automatic pointer dcl 22-19 set ref 501* 502 510 511 514 516 517 518 519 520 capabilities_info_version constant fixed bin(17,0) initial dcl 22-17 ref 502 channel_id 252 based fixed bin(71,0) array level 3 dcl 3-20 set ref 1487* ci 000104 automatic structure level 1 dcl 1423 set ref 1429 1429 1472 1472 cleanup 000140 stack reference condition dcl 194 ref 246 900 1172 clock builtin function dcl 198 ref 981 1359 code parameter fixed bin(35,0) dcl 779 in procedure "call_order" set ref 774 783* 787* 789 791* 795* 798* 801* code parameter fixed bin(35,0) dcl 746 in procedure "send_initial_string" set ref 744 750* 751* 752 code parameter fixed bin(35,0) dcl 661 in procedure "get_video_info_ptr" set ref 655 663* 665 665* code parameter fixed bin(35,0) dcl 696 in procedure "setup_terminal" set ref 694 708* 709 715* 717* 718 723* 725* 726 726* 728 731* 732 code parameter fixed bin(35,0) dcl 809 in procedure "check_protocol" set ref 805 815* code parameter fixed bin(35,0) dcl 541 in procedure "get_terminal_info" set ref 536 546* 558* 559 code parameter fixed bin(35,0) dcl 574 in procedure "get_video_data" set ref 568 576* 578* 579 582* 583 588* 589 592* code parameter fixed bin(35,0) dcl 1007 in procedure "check_bounds" ref 1005 code parameter fixed bin(35,0) dcl 993 in procedure "find_window" set ref 989 999* code parameter fixed bin(35,0) dcl 838 in procedure "set_modes" set ref 834 852* 854 854 866 873* code parameter fixed bin(35,0) dcl 680 in procedure "verify_capabilities" set ref 672 682* 685* col 6 based fixed bin(17,0) level 4 in structure "request_read" dcl 14-101 in procedure "tc_" ref 1084 1090 col 6 based fixed bin(17,0) level 3 in structure "request_header" dcl 14-22 in procedure "tc_" ref 1017 1017 1017 1042 1051 1057 1113 1113 1125 1125 col 6 000656 automatic fixed bin(17,0) level 4 in structure "tct" dcl 748 in procedure "send_initial_string" set ref 760* columns 31 based fixed bin(17,0) level 3 in structure "tc_data" dcl 13-21 in procedure "tc_" set ref 339* 386* 412 467 510 598* 614* 767* 1063 1365 columns 13 based fixed bin(17,0) level 4 in structure "request_clear_region" dcl 14-50 in procedure "tc_" ref 1042 columns 13 001022 automatic fixed bin(17,0) level 4 in structure "rcr" dcl 1356 in procedure "clear_screen_proc" set ref 1365* columns 1 based fixed bin(17,0) level 3 in structure "capabilities_info" dcl 22-3 in procedure "tc_" set ref 510* condition_info based structure level 1 dcl 7-14 condition_info_header based structure level 1 dcl 8-6 condition_info_version_1 constant fixed bin(17,0) initial dcl 7-30 ref 1428 continue_to_signal_ 000130 constant entry external dcl 120 ref 1433 1439 1444 1475 1482 1493 coords 5 based structure level 3 in structure "request_read" dcl 14-101 in procedure "tc_" coords 5 000656 automatic structure level 3 in structure "tct" dcl 748 in procedure "send_initial_string" coords 5 based structure level 2 in structure "request_header" dcl 14-22 in procedure "tc_" coords 5 001022 automatic structure level 3 in structure "rcr" dcl 1356 in procedure "clear_screen_proc" set ref 1361* count 12 based fixed bin(17,0) level 3 in structure "request_delete_chars" dcl 14-70 in procedure "tc_" ref 1057 count 36 based fixed bin(17,0) level 4 in structure "tc_data" dcl 13-21 in procedure "tc_" set ref 910* 1379 1379* cursor_valid 34(01) based bit(1) level 4 packed unaligned dcl 13-21 set ref 1232* debug 243(09) based bit(1) level 3 packed unaligned dcl 3-20 set ref 1208* 1210* 1480 delete_chars 3(03) based bit(1) level 3 packed unaligned dcl 22-3 set ref 518* desk_ptr 1004 based pointer level 2 dcl 13-21 set ref 224* 284* 285 286 382 382 422 423 424 425 426 427 446 480 481 482 483 955 955 976 977 978 979 980 981 998 1017 1017 1017 1017 1017 1017 1038 1038 1042 1051 1051 1057 1057 1063 1071 1071 1071 1071 1071 1084 1084 1090 1090 1113 1113 1113 1125 1125 1125 1291 1292 1292 1342 1343 1343 device_used 76 based char(32) level 2 packed unaligned dcl 3-20 set ref 1487* devx 110 based fixed bin(17,0) level 2 in structure "tc_disconnect_info" dcl 9-17 in procedure "disconnect_handler" ref 1443 devx 1 based fixed bin(17,0) level 2 in structure "tc_data" dcl 13-21 in procedure "tc_" set ref 238* 737* 798* 965* dsa_break_table 000430 automatic structure level 1 dcl 702 set ref 708 708 dsa_error_table_$try_again 000144 external static fixed bin(35,0) dcl 134 ref 789 dsa_tty_$abort 000114 constant entry external dcl 114 ref 735 dsa_tty_$attach 000110 constant entry external dcl 112 ref 230 dsa_tty_$detach 000112 constant entry external dcl 113 ref 960 dsa_tty_$order 000116 constant entry external dcl 115 ref 787 echo_neg_data based structure level 1 dcl 26-22 echo_neg_data_version_2 constant fixed bin(17,0) initial dcl 26-18 ref 704 error_table_$incompatible_term_type 000160 external static fixed bin(35,0) dcl 137 ref 815 error_table_$io_no_permission 000230 external static fixed bin(35,0) dcl 1424 ref 1449 error_table_$no_table 000152 external static fixed bin(35,0) dcl 137 ref 665 error_table_$null_info_ptr 000154 external static fixed bin(35,0) dcl 137 ref 1217 error_table_$smallarg 000150 external static fixed bin(35,0) dcl 137 ref 726 854 error_table_$unimplemented_version 000146 external static fixed bin(35,0) dcl 137 ref 503 1221 error_table_$unsupported_terminal 000156 external static fixed bin(35,0) dcl 137 ref 665 event 4 based fixed bin(71,0) level 2 dcl 13-21 set ref 248* event_wait 250 based structure level 2 dcl 3-20 event_wait_channel 000162 automatic structure level 1 dcl 4-8 extent 12 based structure level 3 in structure "request_clear_region" dcl 14-50 in procedure "tc_" extent 12 001022 automatic structure level 3 in structure "rcr" dcl 1356 in procedure "clear_screen_proc" find_condition_info_ 000220 constant entry external dcl 1414 ref 1429 1472 first_column 3 based fixed bin(17,0) array level 3 in structure "windows" dcl 169 in procedure "tc_" set ref 382 425* 482* 1017 1017 1051 1057 1084 1090 1113 1113 1125 1125 first_column 2 based fixed bin(17,0) level 2 in structure "tc_desk_window_info" dcl 5-14 in procedure "tc_" set ref 1190* 1201* first_row based fixed bin(17,0) level 2 dcl 5-14 set ref 1190* 1201* flags 11 based structure level 2 in structure "mode_value" dcl 2-16 in procedure "get_video_data" flags 4 based structure level 2 in structure "tty_video_table" dcl 12-12 in procedure "tc_" flags 3 based structure level 2 in structure "capabilities_info" dcl 22-3 in procedure "tc_" flags 243 based structure level 2 in structure "attach_data" dcl 3-20 in procedure "tc_" flags 34 based structure level 3 in structure "tc_data" dcl 13-21 in procedure "tc_" flags based structure array level 2 in structure "windows" dcl 169 in procedure "tc_" flags 11 based structure array level 3 in structure "tty_video_table" packed unaligned dcl 12-12 in procedure "tc_" foreign_terminal_data based structure level 1 dcl 1-5 fsc_info 000200 automatic structure level 1 unaligned dcl 1168 set ref 1237 1237 get_system_free_area_ 000142 constant entry external dcl 132 ref 608 have_sent_protocol 260 based bit(72) level 4 packed unaligned dcl 13-21 set ref 250* hbound builtin function dcl 198 ref 811 976 1291 1342 hcs_$reset_ips_mask 000134 constant entry external dcl 123 in procedure "tc_" ref 903 925 hcs_$reset_ips_mask 000232 constant entry external dcl 1501 in procedure "force_unmask" ref 1503 hcs_$set_ips_mask 000132 constant entry external dcl 123 ref 908 hcs_$tty_abort 000104 constant entry external dcl 110 ref 737 hcs_$tty_attach 000100 constant entry external dcl 108 ref 238 hcs_$tty_detach 000102 constant entry external dcl 109 ref 965 hcs_$tty_order 000106 constant entry external dcl 111 ref 798 header 001022 automatic structure level 2 in structure "rcr" dcl 1356 in procedure "clear_screen_proc" header 000656 automatic structure level 2 in structure "tct" dcl 748 in procedure "send_initial_string" header based structure level 2 in structure "request_read" dcl 14-101 in procedure "tc_" i 000376 automatic fixed bin(17,0) dcl 651 set ref 612* 613* i_s_non_varying 000100 automatic char unaligned dcl 763 set ref 764* 765 in_use based bit(1) array level 3 packed unaligned dcl 169 set ref 286* 446* 977 978* 1292 1343 index builtin function dcl 198 ref 232 info parameter pointer dcl 778 set ref 774 787* 795* 798* info_ptr 14 000104 automatic pointer level 2 dcl 1423 set ref 1430 1473 1483 initial_string 000454 automatic varying char(512) dcl 747 set ref 751* 755 763 764 766 input_buffer_ptr 1000 based pointer level 2 dcl 13-21 set ref 223* 952 insert_chars 3(01) based bit(1) level 3 packed unaligned dcl 22-3 set ref 516* insert_mode 3(02) based bit(1) level 3 packed unaligned dcl 22-3 set ref 517* iocb based structure level 1 dcl 6-6 iox_$control 000214 constant entry external dcl 1338 in procedure "set_term_type_proc" ref 1343 iox_$control 000176 constant entry external dcl 155 in procedure "tc_" ref 1237 iox_$control 000212 constant entry external dcl 1286 in procedure "reconnection_proc" ref 1292 iox_$modes 000200 constant entry external dcl 215 ref 723 ipc_$mask_ev_calls 000136 constant entry external dcl 127 ref 909 ipc_$unmask_ev_calls 000140 constant entry external dcl 127 ref 904 924 ips_mask 000136 automatic bit(36) dcl 192 set ref 899* 902 903* 908* 925* lbound builtin function dcl 198 ref 811 length builtin function dcl 198 ref 755 763 766 844 844 849 849 849 850 850 855 855 859 867 867 881 881 882 882 885 line_speed based fixed bin(17,0) dcl 1164 in procedure "tc_" ref 1206 line_speed 4 based fixed bin(17,0) level 2 in structure "capabilities_info" dcl 22-3 in procedure "tc_" set ref 520* line_speed 32 based fixed bin(17,0) level 3 in structure "tc_data" dcl 13-21 in procedure "tc_" set ref 520 599* 618* 1206* line_speed_ptr 000170 automatic pointer dcl 1163 set ref 1205* 1206 location 1 based structure array level 2 dcl 169 login_channel 243(03) based bit(1) level 3 packed unaligned dcl 3-20 ref 1448 1479 mask 000156 automatic bit(36) dcl 1150 set ref 1143* max builtin function dcl 198 ref 844 849 850 855 867 881 message_len 000216 automatic fixed bin(17,0) initial dcl 23-33 set ref 23-33* mode_length 000102 automatic fixed bin(21,0) level 2 dcl 844 set ref 849* 862 mode_name 1 based char(32) level 2 packed unaligned dcl 2-16 ref 614 616 618 620 620 626 626 mode_string_info based structure level 1 dcl 2-9 mode_string_info_ptr 000366 automatic pointer dcl 2-14 in procedure "get_video_data" set ref 611* 612 613 mode_string_info_ptr 4 000370 automatic pointer level 2 in structure "my_ftd" dcl 650 in procedure "get_video_data" set ref 611 mode_value based structure level 1 dcl 2-16 mode_value_ptr 000364 automatic pointer dcl 2-6 set ref 613* 614 614 616 616 618 618 620 620 620 626 626 626 modes 1 000102 automatic char level 2 in structure "t_modes_info" dcl 844 in begin block on line 840 set ref 849 850* 855 867 881 modes 2 based structure array level 2 in structure "mode_string_info" dcl 2-9 in procedure "get_video_data" set ref 613 modes_ptr 000100 automatic pointer dcl 843 set ref 848* 852* mowse_info 000010 internal static structure level 1 unaligned dcl 187 mowse_io_flush_subchannel_info based structure level 1 unaligned dcl 24-80 mowse_io_info_version_1 000030 constant char(8) initial unaligned dcl 24-27 ref 1236 mowse_terminal_iocb_ptr 2 based pointer level 2 in structure "attach_data" dcl 3-20 in procedure "tc_" set ref 1438 1487* mowse_terminal_iocb_ptr 112 based pointer level 2 in structure "tc_disconnect_info" dcl 9-17 in procedure "disconnect_handler" ref 1438 mowse_terminal_iocb_ptr 6 based pointer level 2 in structure "tc_data" dcl 13-21 in procedure "tc_" set ref 234* 714* 723* 795* 962* 1237* 1241* my_ftd 000370 automatic structure level 1 unaligned dcl 650 set ref 609 609 n_channels 000162 automatic fixed bin(17,0) initial level 2 dcl 4-8 set ref 4-8* n_columns 3 based fixed bin(17,0) level 2 in structure "tc_desk_window_info" dcl 5-14 in procedure "tc_" set ref 1190* 1201* n_columns 4 based fixed bin(17,0) array level 3 in structure "windows" dcl 169 in procedure "tc_" set ref 382 426* 483* 1017 1042 1051 1057 1063 1084 1090 1113 1125 n_lines 13 based fixed bin(17,0) level 3 dcl 14-78 ref 1071 1071 n_rows 1 based fixed bin(17,0) level 2 in structure "tc_desk_window_info" dcl 5-14 in procedure "tc_" set ref 1190* 1201* n_rows 2 based fixed bin(17,0) array level 3 in structure "windows" dcl 169 in procedure "tc_" set ref 424* 481* 1017 1038 1071 1071 name 106 based char(32) level 2 in structure "sub_error_info" dcl 10-7 in procedure "disconnect_handler" ref 1474 name 1 based char(32) level 2 in structure "set_term_type_info" packed unaligned dcl 18-8 in procedure "tc_" set ref 1224* 1331* network_type based fixed bin(17,0) level 2 dcl 13-21 set ref 229* 233* 237* 269 305 699 713 723 735 785 795 819 824 960 962 1431 1437 new_modes parameter char unaligned dcl 837 ref 834 844 849 850 850 855 867 881 new_ttp 000766 automatic char(32) unaligned dcl 1248 in procedure "reconnection_proc" set ref 1258* 1263* new_ttp parameter char unaligned dcl 1303 in procedure "set_term_type_proc" set ref 1300 1309* 1317* nseq 10 based fixed bin(17,0) level 2 dcl 12-12 ref 640 919 936 1271 1322 null builtin function dcl 198 ref 222 223 224 592 663 663 740 740 894 919 923 936 939 949 952 955 1216 1271 1322 1429 1429 1472 1472 number 1 based fixed bin(17,0) level 2 dcl 2-9 ref 612 numeric_value 12 based fixed bin(35,0) level 2 dcl 2-16 ref 614 616 618 old_mode_string 1006 based char(512) level 2 packed unaligned dcl 13-21 set ref 723* 725* 915* old_modes parameter char unaligned dcl 837 set ref 834 844 849 850 855* 855 859 863* 867* 867 874 881* 881 882 882 882* 882 885 885* op parameter fixed bin(17,0) dcl 808 set ref 805 811 811 811* 813 operation 7 000656 automatic fixed bin(17,0) level 3 in structure "tct" dcl 748 in procedure "send_initial_string" set ref 758* operation 7 based fixed bin(17,0) level 2 in structure "request_header" dcl 14-22 in procedure "tc_" ref 1025 operation 7 001022 automatic fixed bin(17,0) level 3 in structure "rcr" dcl 1356 in procedure "clear_screen_proc" set ref 1362* operation_hlock 242 based fixed bin(17,0) level 2 dcl 3-20 set ref 1170* 1170 1172* 1172 1382 1382* 1382 1386* 1386 order parameter char unaligned dcl 777 set ref 774 787* 795* 798* overprint 3(04) based bit(1) level 3 packed unaligned dcl 22-3 set ref 519* overstrike_available 4 based bit(1) level 3 packed unaligned dcl 12-12 ref 519 pad 0(02) based bit(34) array level 3 packed unaligned dcl 169 set ref 980* pending 36 based structure level 3 dcl 13-21 present 11 based bit(1) array level 4 packed unaligned dcl 12-12 set ref 514 514 516 517 518 640* 685 685 685 685 685 685 685 685 prompt_length 22 based fixed bin(21,0) level 3 dcl 14-101 ref 1090 protocol 32 000102 automatic fixed bin(17,0) level 2 dcl 185 set ref 582* 1313* protocol_evs 40 based fixed bin(71,0) array level 4 dcl 13-21 set ref 252* protocol_names 000032 constant char(32) initial array unaligned dcl 16-21 ref 811 811 r_coords based structure level 1 dcl 14-34 rcr 001022 automatic structure level 1 dcl 1356 set ref 1367 1367 request_clear_region based structure level 1 dcl 14-50 request_delete_chars based structure level 1 dcl 14-70 request_header based structure level 1 dcl 14-22 request_id 2 001022 automatic fixed bin(71,0) level 3 dcl 1356 set ref 1359* request_ptr 000210 automatic pointer dcl 14-19 set ref 370* 372 373 382* 386* 790* 1017 1017 1017 1017 1017 1017 1025 1038 1038 1042 1042 1051 1051 1057 1057 1071 1071 1071 1071 1071 1084 1084 1090 1090 1113 1113 1125 1125 request_read based structure level 1 dcl 14-101 request_scroll_region based structure level 1 dcl 14-78 request_text based structure level 1 dcl 14-60 reverse builtin function dcl 198 ref 874 881 881 882 882 981 row 5 000656 automatic fixed bin(17,0) level 4 in structure "tct" dcl 748 in procedure "send_initial_string" set ref 759* row 5 based fixed bin(17,0) level 3 in structure "request_header" dcl 14-22 in procedure "tc_" ref 1017 1017 1017 1038 rows 12 based fixed bin(17,0) level 4 in structure "request_clear_region" dcl 14-50 in procedure "tc_" ref 1038 rows 30 based fixed bin(17,0) level 3 in structure "tc_data" dcl 13-21 in procedure "tc_" set ref 339* 412 467 511 597* 616* 1364 rows 12 001022 automatic fixed bin(17,0) level 4 in structure "rcr" dcl 1356 in procedure "clear_screen_proc" set ref 1364* rows 2 based fixed bin(17,0) level 3 in structure "capabilities_info" dcl 22-3 in procedure "tc_" set ref 511* rtrim builtin function dcl 198 ref 874 882 885 screen_data_ptr 1002 based pointer level 2 dcl 13-21 set ref 222* 339* 939 939* 949 949* 1375 screen_height 1 based fixed bin(17,0) level 2 dcl 12-12 ref 597 screen_line_length 2 based fixed bin(17,0) level 2 dcl 12-12 ref 598 screensize 1 based structure level 2 dcl 22-3 scroll_region 3 based bit(1) level 3 packed unaligned dcl 22-3 set ref 514* sentinel 001022 automatic char(4) level 3 dcl 1356 set ref 1358* sequence_number parameter fixed bin(17,0) dcl 644 ref 637 640 640 sequences 11 based structure array level 2 dcl 12-12 set_term_type_info based structure level 1 dcl 18-8 si_ptr parameter pointer dcl 1374 set ref 1372 1375* start_line 12 based fixed bin(17,0) level 3 dcl 14-78 ref 1071 1071 1071 state 34 based structure level 2 dcl 13-21 status_pending 0(01) based bit(1) array level 3 packed unaligned dcl 169 set ref 979* status_string 1 001012 automatic bit(36) level 2 in structure "WSI" dcl 1337 in procedure "set_term_type_proc" set ref 1340* status_string 1 001000 automatic bit(36) level 2 in structure "WSI" dcl 1285 in procedure "reconnection_proc" set ref 1289* stti_version_1 constant fixed bin(17,0) initial dcl 18-5 ref 1220 sttip 000212 automatic pointer dcl 18-6 set ref 1215* 1216 1220 1224 1331 sub_error_ 000172 stack reference condition dcl 1166 ref 1174 sub_error_info based structure level 1 dcl 10-7 sub_error_info_ptr 000102 automatic pointer dcl 10-6 set ref 1473* 1474 subchannel 2 000200 automatic fixed bin(17,0) level 2 dcl 1168 set ref 1235* substr builtin function dcl 198 set ref 228 874 885* 981 996 t_modes_info 000102 automatic structure level 1 dcl 844 set ref 848 tc_$init_ttp_info 000066 constant entry external dcl 99 ref 1331 tc_$shut_ttp_info 000070 constant entry external dcl 100 ref 1330 tc_block 000202 constant entry external dcl 781 ref 790 tc_data based structure level 1 dcl 13-21 set ref 221 242 257 922 tc_data_ptr 000206 automatic pointer dcl 13-20 in procedure "tc_" set ref 221* 222 223 224 226* 229 230 233 234 237 238 242 248 250 251 252 253 257 261 269 279 284 285 286 292 305 320 337* 338* 339 339 339 361* 382* 382 382 386* 386 398* 412 412 422 423 424 425 426 427 435* 446 453* 467 467 480 481 482 483 492* 510 511 512 520 531* 556 588 588 592 594 597 598 599 614 616 618 699 713 714 723 723 723 725 735 735 737 751 767* 767 785 787 790* 795 795 798 801* 819 824 893* 894 910 915 919 919 922 935* 936 936 939 939 942* 949 949 952 952* 955 955 958* 960 960 962 962 965 976 977 978 979 980 981 998 1017 1017 1017 1017 1017 1017 1038 1038 1042 1051 1051 1057 1057 1063 1063 1071 1071 1071 1071 1071 1084 1084 1090 1090 1113 1113 1113 1125 1125 1125 1161* 1206 1232 1237 1241 1291 1292 1292 1330* 1331* 1342 1343 1343 1364 1365 1375 1379 1379 1431 1437 tc_data_ptr 000010 internal static pointer level 2 in structure "mowse_info" dcl 187 in procedure "tc_" set ref 279* tc_desk_info_ptr 000166 automatic pointer dcl 5-13 set ref 1189* 1190 1190 1190 1190 1190 1190 1195* 1196 1200* 1201 1201 1201 1201 1201 tc_desk_window_info based structure level 1 dcl 5-14 tc_disconnect$check 000046 constant entry external dcl 89 ref 801 tc_disconnect_info based structure level 1 dcl 9-17 tc_info_ptr based pointer level 2 dcl 3-20 set ref 1161 1486* 1487* tc_input$init 000060 constant entry external dcl 95 ref 338 tc_input$shut 000062 constant entry external dcl 96 ref 952 tc_io_$reconnection 000206 constant entry external dcl 1254 ref 1279 tc_request 000064 constant entry external dcl 97 ref 382 386 767 tc_request$init 000050 constant entry external dcl 90 ref 337 tc_request$shut 000052 constant entry external dcl 91 ref 942 958 tc_screen$init 000054 constant entry external dcl 93 ref 339 tc_screen$shut 000056 constant entry external dcl 94 ref 939 949 tc_too_many_windows_ 000720 stack reference condition dcl 986 ref 985 tcdi_ptr 000100 automatic pointer dcl 9-16 set ref 1430* 1432 1438 1443 tct 000656 automatic structure level 1 dcl 748 set ref 767 767 temp_seg_name 000220 automatic char(6) initial unaligned dcl 25-22 set ref 25-22* term_type 2 000334 automatic char(32) level 2 packed unaligned dcl 543 set ref 554* 556 558* terminal 30 based structure level 2 dcl 13-21 terminal_control_disconnection_ 000146 stack reference condition dcl 195 ref 912 1171 terminal_info based structure level 1 dcl 17-6 terminal_state based structure level 1 dcl 13-54 terminal_type_data based structure level 1 dcl 15-15 text_length 14 based fixed bin(21,0) level 3 in structure "request_text" dcl 14-60 in procedure "tc_" ref 1051 text_length 14 000656 automatic fixed bin(21,0) level 3 in structure "tct" dcl 748 in procedure "send_initial_string" set ref 766* text_ptr 12 000656 automatic pointer level 3 dcl 748 set ref 765* ti 000334 automatic structure level 1 dcl 543 set ref 552 552 timer_manager_$sleep 000224 constant entry external dcl 1417 ref 1461 top_row 1 based fixed bin(17,0) array level 3 dcl 169 set ref 423* 480* 1017 1017 1038 1071 1071 1071 ttd 000102 automatic structure level 1 dcl 185 in procedure "tc_" set ref 278 558 558 717 717 ttd 2 000010 internal static structure level 2 in structure "mowse_info" dcl 187 in procedure "tc_" set ref 278* 715 715 ttd_version_3 constant fixed bin(17,0) initial dcl 15-54 ref 557 ttp parameter char unaligned dcl 539 in procedure "get_terminal_info" ref 536 554 554 ttp parameter char unaligned dcl 658 in procedure "get_video_info_ptr" set ref 655 663* ttp 11 based char(32) level 2 in structure "tc_data" packed unaligned dcl 13-21 in procedure "tc_" set ref 556* 588* 751* ttt_info_$initial_string 000072 constant entry external dcl 102 ref 751 ttt_info_$terminal_data 000076 constant entry external dcl 105 ref 558 ttt_info_$video_info 000074 constant entry external dcl 104 ref 663 ttt_video_ptr 22 based pointer level 2 dcl 13-21 set ref 320* 512 588* 592 594 919 919 936 936 tty_handle 2 based fixed bin(35,0) level 2 in structure "tc_data" dcl 13-21 in procedure "tc_" set ref 230* 735* 787* 960* tty_handle 111 based fixed bin(35,0) level 2 in structure "tc_disconnect_info" dcl 9-17 in procedure "disconnect_handler" ref 1432 tty_handle 241 based fixed bin(35,0) level 2 in structure "attach_data" dcl 3-20 in procedure "tc_" ref 1432 tty_index 240 based fixed bin(17,0) level 2 dcl 3-20 ref 1443 tty_state 000100 automatic fixed bin(17,0) dcl 780 in procedure "call_order" set ref 787* 795* 798* tty_state 000100 automatic fixed bin(17,0) dcl 152 in procedure "tc_" set ref 230* 238* 714* 735* 737* 1241* tty_video_seq based structure level 1 dcl 12-37 tty_video_table based structure level 1 dcl 12-12 set ref 919 936 1271 1322 ttyvtblp 000204 automatic pointer dcl 12-9 set ref 512* 514 514 516 517 518 519 594* 597 598 640 640 684* 685 685 685 685 685 685 685 685 unspec builtin function dcl 198 set ref 285* user_info_$terminal_data 000204 constant entry external dcl 1252 ref 1258 version 001000 automatic fixed bin(17,0) level 2 in structure "WSI" dcl 1285 in procedure "reconnection_proc" set ref 1288* version 2 000104 automatic fixed bin(17,0) level 2 in structure "ci" dcl 1423 in procedure "disconnect_handler" set ref 1428* 1471* version 000430 automatic fixed bin(17,0) level 2 in structure "dsa_break_table" dcl 702 in procedure "setup_terminal" set ref 704* version 000334 automatic fixed bin(17,0) level 2 in structure "ti" dcl 543 in procedure "get_terminal_info" set ref 551* version based fixed bin(17,0) level 2 in structure "capabilities_info" dcl 22-3 in procedure "tc_" ref 502 version 000102 automatic fixed bin(17,0) level 2 in structure "ttd" dcl 185 in procedure "tc_" set ref 557* version based fixed bin(17,0) level 2 in structure "set_term_type_info" dcl 18-8 in procedure "tc_" ref 1220 version 001012 automatic fixed bin(17,0) level 2 in structure "WSI" dcl 1337 in procedure "set_term_type_proc" set ref 1339* version 000200 automatic char(8) level 2 in structure "fsc_info" packed unaligned dcl 1168 in procedure "tc_" set ref 1236* version 000370 automatic char(8) level 2 in structure "my_ftd" packed unaligned dcl 650 in procedure "get_video_data" set ref 607* video_chars_len 5 based fixed bin(21,0) level 2 dcl 12-12 ref 919 936 1271 1322 video_data_$error_name 000226 external static char(32) unaligned dcl 1418 ref 1474 video_et_$bad_window_id 000164 external static fixed bin(35,0) dcl 137 in procedure "tc_" ref 999 video_et_$bad_window_id 000216 external static fixed bin(35,0) dcl 1412 in procedure "disconnect_handler" ref 1464 1489 video_et_$capability_lacking 000166 external static fixed bin(35,0) dcl 137 ref 1067 video_et_$no_video_info 000170 external static fixed bin(35,0) dcl 137 ref 592 video_et_$out_of_window_bounds 000174 external static fixed bin(35,0) dcl 137 ref 1106 video_et_$terminal_cannot_position 000172 external static fixed bin(35,0) dcl 137 ref 685 video_et_$window_too_big 000162 external static fixed bin(35,0) dcl 137 ref 417 472 video_info_ptr parameter pointer dcl 660 in procedure "get_video_info_ptr" set ref 655 663* video_info_ptr 000776 automatic pointer dcl 1249 in procedure "reconnection_proc" set ref 1263* 1270* 1271 1271 video_info_ptr 001010 automatic pointer dcl 1305 in procedure "set_term_type_proc" set ref 1317* 1321* 1322 1322 video_table_ptr parameter pointer dcl 675 ref 672 684 video_utils_$turn_off_for_debug 000222 constant entry external dcl 1415 ref 1481 video_utils_$turn_off_login_channel 000210 constant entry external dcl 1255 ref 1265 w 000716 automatic fixed bin(17,0) dcl 974 set ref 976* 977 978 979 980 981 981 982* window_id 5 based bit(36) array level 2 in structure "windows" dcl 169 in procedure "tc_" set ref 422 981* 998 window_id 4 based bit(36) level 2 in structure "tc_desk_window_info" dcl 5-14 in procedure "tc_" set ref 1190* 1196* 1201* window_id parameter bit(36) dcl 992 in procedure "find_window" ref 989 996 998 window_id 4 based bit(36) level 2 in structure "request_header" dcl 14-22 in procedure "tc_" set ref 372 373* window_id 4 001022 automatic bit(36) level 3 in structure "rcr" dcl 1356 in procedure "clear_screen_proc" set ref 1360* window_iocb_ptr 6 based pointer level 2 in structure "tc_desk_window_info" dcl 5-14 in procedure "tc_" set ref 1190* window_iocb_ptr 6 based pointer array level 2 in structure "windows" dcl 169 in procedure "tc_" set ref 427* 1292* 1343* window_status_info based structure level 1 dcl 19-45 window_status_version_1 constant fixed bin(17,0) initial dcl 19-52 ref 1288 1339 windows based structure array level 1 unaligned dcl 169 set ref 284 285* 955 976 1291 1342 ws_tty_$abort 000124 constant entry external dcl 118 ref 714 ws_tty_$attach 000120 constant entry external dcl 116 ref 1241 ws_tty_$detach 000122 constant entry external dcl 117 ref 962 ws_tty_$order 000126 constant entry external dcl 119 ref 795 wx 000135 automatic fixed bin(17,0) dcl 191 in procedure "tc_" set ref 373* 382 382 421* 422 423 424 425 426 427 443* 446 476* 480 481 482 483 1017 1017 1017 1017 1017 1017 1038 1038 1042 1051 1051 1057 1057 1063 1071 1071 1071 1071 1071 1084 1084 1090 1090 1113 1113 1113 1125 1125 1125 1291* 1292 1292* 1342* 1343 1343* wx 000734 automatic fixed bin(17,0) dcl 994 in procedure "find_window" set ref 996* 998 1002 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT internal static fixed bin(17,0) initial dcl 25-54 ACTION_CANT_RESTART internal static bit(36) initial dcl 21-7 ACTION_CAN_RESTART internal static bit(36) initial dcl 21-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 21-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 21-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 21-7 ADD_TO_REMOTE_CAT internal static fixed bin(17,0) initial dcl 25-78 BG internal static fixed bin(17,0) initial dcl 23-17 CLEAR_SCREEN internal static fixed bin(17,0) initial dcl 12-54 CLEAR_TO_EOL internal static fixed bin(17,0) initial dcl 12-54 CLEAR_TO_EOS internal static fixed bin(17,0) initial dcl 12-54 CONTINUE internal static fixed bin(17,0) initial dcl 25-94 DELETE_FROM_REMOTE_CAT internal static fixed bin(17,0) initial dcl 25-79 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 unaligned dcl 11-103 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 ECHO_NEG_BREAK_TABLE_SIZE internal static fixed bin(17,0) initial dcl 26-19 EXECUTE_CAPABILITY_REPLY internal static fixed bin(17,0) initial dcl 25-73 EXECUTE_COMMAND internal static fixed bin(17,0) initial dcl 25-77 EXECUTE_COMMAND_REPLY internal static fixed bin(17,0) initial dcl 25-72 FAIL_CAPABILITY internal static fixed bin(17,0) initial dcl 25-75 FG_BREAK internal static fixed bin(17,0) initial dcl 25-105 FG_CONTROL_MESSAGE internal static fixed bin(17,0) initial dcl 25-104 FG_MORE_DATA internal static fixed bin(17,0) initial dcl 25-107 FG_TERMINAL_DATA internal static fixed bin(17,0) initial dcl 25-106 INTERNAL internal static fixed bin(17,0) initial dcl 25-76 LAST internal static fixed bin(17,0) initial dcl 25-71 LOCAL_SYSTEM internal static fixed bin(17,0) initial dcl 25-30 MAXIMUM_BG_SIZE internal static fixed bin(17,0) initial dcl 25-44 MAXIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 25-43 MAXIMUM_PACKET_SIZE internal static fixed bin(17,0) initial dcl 25-49 MAXIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 25-65 MAXIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 25-67 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_MSG_TYPE_TO_PNAME internal static char(20) initial array 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_UNSPECIFIED_MSG internal static fixed bin(17,0) initial dcl 11-48 MCS_WRITE_MSG internal static fixed bin(17,0) initial dcl 11-60 MINIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 25-42 MINIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 25-64 MINIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 25-66 MORE internal static fixed bin(17,0) initial dcl 25-95 MOWSE_FANSI_PROTOCOL internal static fixed bin(17,0) initial dcl 16-19 MOWSE_PROTOCOL internal static fixed bin(17,0) initial dcl 16-18 MOWSE_VERSION_ internal static char(8) initial unaligned dcl 25-26 NETWORK_TYPE_VALUES internal static varying char(8) initial array dcl 11-38 NET_EVENT_MESSAGE_VERSION_1 internal static bit(2) initial unaligned dcl 11-20 NO_PROTOCOL internal static fixed bin(17,0) initial dcl 16-17 N_VIDEO_SEQUENCES internal static fixed bin(17,0) initial dcl 12-64 OP_BELL internal static fixed bin(17,0) initial dcl 14-86 OP_CLEAR_REGION internal static fixed bin(17,0) initial dcl 14-41 OP_DELETE_CHARS internal static fixed bin(17,0) initial dcl 14-68 OP_ERROR internal static fixed bin(17,0) initial dcl 14-38 OP_GET_CHARS_ECHO internal static fixed bin(17,0) initial dcl 14-87 OP_GET_CHARS_NO_ECHO internal static fixed bin(17,0) initial dcl 14-88 OP_GET_CURSOR_POSITION internal static fixed bin(17,0) initial dcl 14-118 OP_INSERT_TEXT internal static fixed bin(17,0) initial dcl 14-58 OP_OVERWRITE_TEXT internal static fixed bin(17,0) initial dcl 14-121 OP_POSITION_CURSOR internal static fixed bin(17,0) initial dcl 14-39 OP_READ_ONE internal static fixed bin(17,0) initial dcl 14-123 OP_READ_STATUS internal static fixed bin(17,0) initial dcl 14-120 OP_SCROLL_REGION internal static fixed bin(17,0) initial dcl 14-76 OP_WRITE_SYNC_GET_CHARS_NO_ECHO internal static fixed bin(17,0) initial dcl 14-90 OVERFLOWED_BUFFER internal static fixed bin(17,0) initial dcl 25-87 PUT_TO_BACKGROUND_BUFFER internal static fixed bin(17,0) initial dcl 25-108 PUT_TO_QUERY_MESSAGE_BUFFER internal static fixed bin(17,0) initial dcl 25-110 QUERY_REPLY internal static fixed bin(17,0) initial dcl 25-89 RECEIVE internal static fixed bin(17,0) initial dcl 25-59 REJECT internal static fixed bin(17,0) initial dcl 25-55 REMOTE_SYSTEM internal static fixed bin(17,0) initial dcl 25-31 REQUEST_CONNECT internal static fixed bin(17,0) initial dcl 25-92 REQUEST_DISCONNECT internal static fixed bin(17,0) initial dcl 25-93 RESET_APPLICATION internal static fixed bin(17,0) initial dcl 25-83 RESET_REPLY internal static fixed bin(17,0) initial dcl 25-84 RESET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 25-97 RESET_SUSPEND internal static fixed bin(17,0) initial dcl 25-99 RESPONSE_CONNECT internal static fixed bin(17,0) initial dcl 25-90 RESPONSE_DISCONNECT internal static fixed bin(17,0) initial dcl 25-91 RESUME_APPLICATION internal static fixed bin(17,0) initial dcl 25-81 SEND internal static fixed bin(17,0) initial dcl 25-60 SEND_QUERY internal static fixed bin(17,0) initial dcl 25-53 SET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 25-96 SET_SUSPEND internal static fixed bin(17,0) initial dcl 25-98 STATUS internal static fixed bin(17,0) initial dcl 25-86 STATUS_FAILED internal static fixed bin(8,0) initial dcl 25-37 STATUS_REPLY internal static fixed bin(17,0) initial dcl 25-100 STATUS_SUCCESS internal static fixed bin(8,0) initial dcl 25-35 SUSPEND_APPLICATION internal static fixed bin(17,0) initial dcl 25-80 SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 25-88 TERMINATE_APPLICATION internal static fixed bin(17,0) initial dcl 25-82 WAKE_UP internal static fixed bin(17,0) initial dcl 25-85 W_STATUS_ASYNC_EVENT internal static bit(36) initial dcl 20-17 alter_cat_message based structure level 1 packed unaligned dcl 23-63 break_table_info based structure level 1 dcl 19-76 break_table_info_version internal static fixed bin(17,0) initial dcl 19-80 break_table_info_version_1 internal static fixed bin(17,0) initial dcl 19-80 break_table_ptr automatic pointer dcl 19-75 capabilities_info_version_1 internal static fixed bin(17,0) initial dcl 22-17 condition_info_header_ptr automatic pointer dcl 8-4 condition_info_ptr automatic pointer dcl 7-10 echo_neg_data_version_1 internal static fixed bin(17,0) initial dcl 26-40 echo_neg_datap automatic pointer dcl 26-17 event_message based structure level 1 packed unaligned dcl 23-76 execom_message based structure level 1 packed unaligned dcl 23-49 execom_reply_msg based structure level 1 packed unaligned dcl 23-122 foreign_terminal_data_ptr automatic pointer dcl 1-3 get_editor_key_bindings_info based structure level 1 dcl 19-151 get_editor_key_bindings_info_ptr automatic pointer dcl 19-159 get_editor_key_bindings_info_version_1 internal static char(8) initial unaligned dcl 19-160 hcs_$echo_negotiate_get_chars 000000 constant entry external dcl 26-59 hcs_$tty_read_echoed 000000 constant entry external dcl 26-59 input_message based structure level 1 packed unaligned dcl 23-38 iox_$iocb_version_sentinel external static char(4) dcl 6-51 last_message based structure level 1 packed unaligned dcl 23-110 line_editor_binding_count automatic fixed bin(17,0) dcl 19-121 line_editor_key_binding_info based structure level 1 dcl 19-129 line_editor_key_binding_info_ptr automatic pointer dcl 19-118 line_editor_key_binding_info_version_3 internal static char(8) initial unaligned dcl 19-148 line_editor_longest_sequence automatic fixed bin(17,0) dcl 19-123 message_node based structure level 1 unaligned dcl 23-136 message_ptr automatic pointer dcl 23-34 mode_string_info_version_2 internal static fixed bin(17,0) initial dcl 2-30 mode_value_version_3 internal static fixed bin(17,0) initial dcl 2-30 more_handler_info based structure level 1 dcl 19-83 more_handler_info_ptr automatic pointer dcl 19-92 more_handler_info_version internal static fixed bin(17,0) initial dcl 19-94 more_handler_info_version_3 internal static fixed bin(17,0) initial dcl 19-94 more_prompt_info based structure level 1 dcl 19-108 more_prompt_info_ptr automatic pointer dcl 19-112 more_prompt_info_version_1 internal static char(8) initial unaligned dcl 19-114 more_remaining_message based structure level 1 packed unaligned dcl 23-96 more_responses_info based structure level 1 dcl 19-59 more_responses_info_ptr automatic pointer dcl 19-69 more_responses_info_version_1 internal static fixed bin(17,0) initial dcl 19-67 more_responses_version internal static fixed bin(17,0) initial dcl 19-67 mowse_io_debug_info based structure level 1 unaligned dcl 24-48 mowse_io_debug_info_ptr automatic pointer dcl 24-46 mowse_io_flush_subchannel_info_ptr automatic pointer dcl 24-78 mowse_io_info based structure level 1 unaligned dcl 24-40 mowse_io_info_ptr automatic pointer dcl 24-39 mowse_io_message based structure level 1 unaligned dcl 24-63 mowse_io_message_ptr automatic pointer dcl 24-62 mowse_io_set_video_mode_info based structure level 1 packed unaligned dcl 24-88 mowse_io_set_video_mode_info_ptr automatic pointer dcl 24-86 mowse_io_sleep_info based structure level 1 unaligned dcl 24-72 mowse_io_sleep_info_ptr automatic pointer dcl 24-70 mowse_io_store_info based structure level 1 unaligned dcl 24-34 mowse_io_store_info_ptr automatic pointer dcl 24-32 mowse_io_terminal_state based structure level 1 packed unaligned dcl 24-55 mowse_io_terminal_state_ptr automatic pointer dcl 24-53 msg_node_ptr automatic pointer dcl 23-135 net_event_message based structure level 1 dcl 11-22 net_event_message_arg automatic fixed bin(71,0) dcl 11-19 number_of_modes automatic fixed bin(17,0) dcl 2-6 part_msg based char unaligned dcl 23-152 part_msg_length automatic fixed bin(17,0) dcl 23-151 part_msg_ptr automatic pointer dcl 23-144 partial_message based structure level 1 unaligned dcl 23-145 protocol_values internal static fixed bin(17,0) initial array dcl 16-26 request_buffer based char unaligned dcl 14-116 request_more_message based structure level 1 packed unaligned dcl 23-84 request_prompt based char unaligned dcl 14-115 request_read_status based structure level 1 dcl 14-93 request_text_string based char unaligned dcl 14-66 set_editor_key_bindings_info based structure level 1 dcl 19-162 set_editor_key_bindings_info_ptr automatic pointer dcl 19-171 set_editor_key_bindings_info_version_1 internal static char(8) initial unaligned dcl 19-172 state_async_same_window defined bit(1) array unaligned dcl 13-79 state_have_sent_protocol defined bit(1) array unaligned dcl 13-82 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 10-13 tc_break_array defined bit(1) array unaligned dcl 13-52 terminal_control_disconnection_ 000000 stack reference condition dcl 9-25 terminal_info_ptr automatic pointer dcl 17-15 terminal_info_version internal static fixed bin(17,0) initial dcl 17-16 token_characters_info based structure level 1 dcl 19-97 token_characters_info_ptr automatic pointer dcl 19-104 token_characters_info_version_1 internal static char(8) initial unaligned dcl 19-106 trace_message_info automatic structure level 1 unaligned dcl 23-155 ttdp automatic pointer dcl 15-53 tty_numeric_encoding based structure level 1 packed unaligned dcl 12-69 tty_video_table_video_chars_len automatic fixed bin(21,0) dcl 12-10 tty_video_tables_version_1 internal static fixed bin(17,0) initial dcl 12-7 ttyvseqp automatic pointer dcl 12-35 v1_echo_neg_data based structure level 1 dcl 26-42 video_chars based char unaligned dcl 12-30 video_chars_ptr automatic pointer dcl 12-29 window_edit_line_info based structure level 1 unaligned dcl 19-177 window_edit_line_info_ptr automatic pointer dcl 19-186 window_edit_line_info_version_1 internal static char(8) initial unaligned dcl 19-183 window_position_info based structure level 1 unaligned dcl 19-25 window_position_info_ptr automatic pointer dcl 19-37 window_position_info_version internal static fixed bin(17,0) initial dcl 19-35 window_position_info_version_1 internal static fixed bin(17,0) initial dcl 19-35 window_status automatic structure level 1 dcl 20-10 window_status_info_ptr automatic pointer dcl 19-43 window_status_string automatic bit(36) unaligned dcl 20-7 window_status_version internal static fixed bin(17,0) initial dcl 19-52 NAMES DECLARED BY EXPLICIT CONTEXT. OP 000004 constant label array(0:16) dcl 1027 set ref 1025 OUT_OF_BOUNDS 006126 constant label dcl 1106 ref 1017 1038 1042 1051 1057 1071 1084 1090 1113 1125 PROTOCOL 000000 constant label array(-1:2) dcl 815 ref 813 819 824 REVOKE_VIDEO 006270 constant label dcl 1265 ref 1274 1280 call_order 004635 constant entry internal dcl 774 ref 532 552 609 708 715 717 740 852 1243 check_bounds 005711 constant entry internal dcl 1005 ref 378 check_bounds_within_phantom 006132 constant entry internal dcl 1110 ref 1030 1035 1047 check_bounds_within_window 006152 constant entry internal dcl 1122 ref 1055 1082 1088 check_in_window 001210 constant entry external dcl 392 check_in_window_proc 003005 constant entry internal dcl 404 ref 401 1190 check_out_window 001265 constant entry external dcl 431 check_out_window_proc 003101 constant entry internal dcl 439 ref 436 1196 check_protocol 005035 constant entry internal dcl 805 ref 582 1313 cleanup_init 005422 constant entry internal dcl 946 ref 246 265 272 584 917 clear_screen_proc 006701 constant entry internal dcl 1353 ref 353 913 1179 delete_sequence 003777 constant entry internal dcl 637 ref 622 623 628 629 disconnect_handler 006737 constant entry internal dcl 1391 ref 1171 find_free_slot 005577 constant entry internal dcl 972 ref 421 find_window 005666 constant entry internal dcl 989 ref 373 443 476 force_unmask 007315 constant entry internal dcl 1499 ref 1450 1456 get_capabilities 001373 constant entry external dcl 488 get_capabilities_proc 003227 constant entry internal dcl 497 ref 494 1185 get_screen_image_proc 006730 constant entry internal dcl 1372 ref 1182 get_terminal_info 003321 constant entry internal dcl 536 ref 576 578 1309 get_video_data 003452 constant entry internal dcl 568 ref 316 get_video_info_ptr 004011 constant entry internal dcl 655 ref 588 1263 1317 give_up_shut 001654 constant label dcl 917 ref 912 hangup_return 002570 constant label dcl 1386 ref 1451 1466 init 000500 constant entry external dcl 217 ref 1487 init_ttp_info 001100 constant entry external dcl 298 init_ttp_info_1 002574 constant entry internal dcl 311 ref 255 301 init_ttp_info_2 002626 constant entry internal dcl 328 ref 263 304 init_ttp_info_3 002663 constant entry internal dcl 344 ref 270 305 1238 mode_block 005104 constant label dcl 840 perhaps_internal_error 007123 constant entry internal dcl 1468 ref 1174 random_order 001425 constant entry external dcl 526 reconnected 007113 constant label dcl 1464 ref 1459 reconnection_proc 006205 constant entry internal dcl 1245 ref 1229 reinit_return 002556 constant label dcl 1379 ref 1491 request 001152 constant entry external dcl 358 request_proc 002675 constant entry internal dcl 366 ref 363 1176 1367 resize_window 001322 constant entry external dcl 450 resize_window_proc 003127 constant entry internal dcl 459 ref 456 1201 send_initial_string 004523 constant entry internal dcl 744 ref 731 914 set_modes 005066 constant entry internal dcl 834 ref 725 915 set_term_type_proc 006425 constant entry internal dcl 1300 ref 1224 set_up 006172 constant entry internal dcl 1137 ref 1160 setup_terminal 004142 constant entry internal dcl 694 ref 349 shut 001475 constant entry external dcl 890 ref 1486 shut_ttp_info 001732 constant entry external dcl 932 tc_ 000463 constant entry external dcl 85 tc_io_control 002013 constant entry external dcl 1158 try_again 004656 constant label dcl 787 ref 792 verify_capabilities 004066 constant entry internal dcl 672 ref 320 1270 1321 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 10460 10714 7376 10470 Length 12026 7376 234 1076 1061 36 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tc_ 948 external procedure is an external procedure. on unit on line 246 64 on unit init_ttp_info_1 internal procedure shares stack frame of external procedure tc_. init_ttp_info_2 internal procedure shares stack frame of external procedure tc_. init_ttp_info_3 internal procedure shares stack frame of external procedure tc_. request_proc internal procedure shares stack frame of external procedure tc_. check_in_window_proc internal procedure shares stack frame of external procedure tc_. check_out_window_proc internal procedure shares stack frame of external procedure tc_. resize_window_proc internal procedure shares stack frame of external procedure tc_. get_capabilities_proc internal procedure shares stack frame of external procedure tc_. get_terminal_info internal procedure shares stack frame of external procedure tc_. get_video_data internal procedure shares stack frame of external procedure tc_. delete_sequence internal procedure shares stack frame of external procedure tc_. get_video_info_ptr internal procedure shares stack frame of external procedure tc_. verify_capabilities internal procedure shares stack frame of external procedure tc_. setup_terminal internal procedure shares stack frame of external procedure tc_. send_initial_string internal procedure shares stack frame of external procedure tc_. begin block on line 762 82 begin block uses auto adjustable storage. call_order 88 internal procedure is called by several nonquick procedures. check_protocol internal procedure shares stack frame of external procedure tc_. set_modes internal procedure shares stack frame of external procedure tc_. begin block on line 840 88 begin block uses auto adjustable storage. on unit on line 900 72 on unit on unit on line 912 64 on unit cleanup_init 88 internal procedure is called by several nonquick procedures. find_free_slot internal procedure shares stack frame of external procedure tc_. find_window internal procedure shares stack frame of external procedure tc_. check_bounds internal procedure shares stack frame of external procedure tc_. check_bounds_within_phantom internal procedure shares stack frame of external procedure tc_. set_up internal procedure shares stack frame of external procedure tc_. on unit on line 1171 64 on unit on unit on line 1172 64 on unit on unit on line 1174 64 on unit begin block on line 1214 begin block shares stack frame of external procedure tc_. reconnection_proc internal procedure shares stack frame of external procedure tc_. set_term_type_proc internal procedure shares stack frame of external procedure tc_. clear_screen_proc internal procedure shares stack frame of external procedure tc_. get_screen_image_proc internal procedure shares stack frame of external procedure tc_. disconnect_handler 152 internal procedure is called by several nonquick procedures. force_unmask internal procedure shares stack frame of internal procedure disconnect_handler. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 mowse_info tc_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 762 000100 i_s_non_varying begin block on line 762 begin block on line 840 000100 modes_ptr begin block on line 840 000102 t_modes_info begin block on line 840 call_order 000100 tty_state call_order disconnect_handler 000100 tcdi_ptr disconnect_handler 000102 sub_error_info_ptr disconnect_handler 000104 ci disconnect_handler tc_ 000100 tty_state tc_ 000101 X_code tc_ 000102 ttd tc_ 000135 wx tc_ 000136 ips_mask tc_ 000154 actual_iocbp tc_ 000156 mask tc_ 000160 attach_data_ptr tc_ 000162 event_wait_channel tc_ 000166 tc_desk_info_ptr tc_ 000170 line_speed_ptr tc_ 000200 fsc_info tc_ 000204 ttyvtblp tc_ 000206 tc_data_ptr tc_ 000210 request_ptr tc_ 000212 sttip tc_ 000214 capabilities_info_ptr tc_ 000216 message_len tc_ 000220 temp_seg_name tc_ 000334 ti get_terminal_info 000362 baud_rate get_video_data 000364 mode_value_ptr get_video_data 000366 mode_string_info_ptr get_video_data 000370 my_ftd get_video_data 000376 i get_video_data 000430 dsa_break_table setup_terminal 000454 initial_string send_initial_string 000656 tct send_initial_string 000716 w find_free_slot 000734 wx find_window 000766 new_ttp reconnection_proc 000776 video_info_ptr reconnection_proc 001000 WSI reconnection_proc 001010 video_info_ptr set_term_type_proc 001012 WSI set_term_type_proc 001022 rcr clear_screen_proc THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. set_stack enter_begin_block leave_begin_block call_ext_in_desc call_ext_in call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other begin_return_mac return_mac tra_ext_1 alloc_auto_adj signal_op enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc fetch_bits reverse_cs reverse_bs set_chars_eis set_bits_eis index_chars_eis alloc_storage op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. continue_to_signal_ dsa_tty_$abort dsa_tty_$attach dsa_tty_$detach dsa_tty_$order find_condition_info_ get_system_free_area_ hcs_$reset_ips_mask hcs_$reset_ips_mask hcs_$set_ips_mask hcs_$tty_abort hcs_$tty_attach hcs_$tty_detach hcs_$tty_order iox_$control iox_$control iox_$control iox_$modes ipc_$mask_ev_calls ipc_$unmask_ev_calls tc_$init_ttp_info tc_$shut_ttp_info tc_block tc_disconnect$check tc_input$init tc_input$shut tc_io_$reconnection tc_request tc_request$init tc_request$shut tc_screen$init tc_screen$shut timer_manager_$sleep ttt_info_$initial_string ttt_info_$terminal_data ttt_info_$video_info user_info_$terminal_data video_utils_$turn_off_for_debug video_utils_$turn_off_login_channel ws_tty_$abort ws_tty_$attach ws_tty_$detach ws_tty_$order THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dsa_error_table_$try_again error_table_$incompatible_term_type error_table_$io_no_permission error_table_$no_table error_table_$null_info_ptr error_table_$smallarg error_table_$unimplemented_version error_table_$unsupported_terminal video_data_$error_name video_et_$bad_window_id video_et_$bad_window_id video_et_$capability_lacking video_et_$no_video_info video_et_$out_of_window_bounds video_et_$terminal_cannot_position video_et_$window_too_big LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 4 8 000444 23 33 000446 23 155 000450 25 22 000456 85 000462 87 000471 217 000472 220 000523 221 000531 222 000535 223 000537 224 000540 225 000541 226 000542 228 000545 229 000553 230 000555 231 000607 232 000610 233 000620 234 000622 235 000626 237 000627 238 000631 241 000663 242 000665 243 000667 246 000670 248 000712 250 000716 251 000721 252 000723 253 000740 255 000751 256 000757 257 000761 258 000763 261 000764 263 000770 264 000776 265 001000 266 001004 269 001005 270 001010 271 001016 272 001020 273 001024 275 001025 278 001026 279 001032 283 001034 284 001042 285 001047 286 001052 289 001066 292 001070 294 001073 298 001074 301 001116 302 001124 304 001126 305 001134 307 001145 358 001146 361 001163 362 001167 363 001170 364 001200 392 001201 398 001233 399 001237 401 001240 402 001260 431 001261 433 001300 435 001301 436 001305 437 001313 450 001314 453 001345 454 001351 456 001352 457 001370 488 001371 492 001404 493 001410 494 001411 495 001417 526 001420 531 001444 532 001450 533 001471 890 001472 893 001503 894 001507 899 001513 900 001514 902 001530 903 001533 904 001545 906 001555 908 001556 909 001571 910 001601 912 001603 913 001622 914 001623 915 001632 917 001654 919 001660 922 001677 923 001701 924 001704 925 001714 927 001727 932 001730 935 001740 936 001744 939 001762 942 001776 944 002010 1158 002011 1160 002032 1161 002033 1170 002036 1171 002040 1172 002062 1174 002103 1176 002125 1179 002145 1182 002153 1185 002166 1188 002201 1189 002205 1190 002210 1193 002230 1194 002231 1195 002235 1196 002240 1197 002246 1198 002247 1200 002253 1201 002256 1203 002274 1204 002275 1205 002301 1206 002304 1207 002307 1208 002310 1210 002320 1213 002330 1215 002334 1216 002340 1217 002344 1218 002347 1220 002351 1221 002354 1222 002357 1224 002361 1225 002375 1227 002377 1229 002400 1232 002413 1234 002423 1235 002427 1236 002431 1237 002433 1238 002470 1239 002476 1241 002500 1242 002534 1243 002535 1379 002556 1382 002562 1384 002567 1386 002570 1389 002573 311 002574 316 002576 317 002604 320 002610 321 002621 324 002625 328 002626 337 002630 338 002637 339 002646 340 002662 344 002663 349 002665 353 002673 354 002674 366 002675 370 002677 372 002702 373 002705 375 002720 378 002724 379 002732 382 002736 384 002764 386 002765 389 003004 404 003005 412 003007 417 003034 418 003037 421 003040 422 003042 423 003051 424 003054 425 003061 426 003066 427 003073 428 003100 439 003101 443 003103 444 003115 446 003120 447 003126 459 003127 467 003131 472 003156 473 003161 476 003162 477 003174 480 003177 481 003207 482 003214 483 003221 485 003226 497 003227 501 003231 502 003234 503 003237 504 003242 510 003243 511 003246 512 003250 514 003252 516 003267 517 003275 518 003303 519 003311 520 003316 521 003320 536 003321 545 003332 546 003334 551 003335 552 003337 554 003370 556 003402 557 003406 558 003410 559 003443 562 003447 564 003451 568 003452 576 003454 578 003510 579 003531 582 003535 583 003545 584 003550 585 003554 588 003555 589 003602 592 003606 594 003616 597 003620 598 003622 599 003624 607 003626 608 003630 609 003637 610 003664 611 003666 612 003670 613 003701 614 003705 616 003715 618 003725 620 003735 622 003750 623 003752 625 003754 626 003755 628 003770 629 003772 632 003774 635 003776 637 003777 640 004001 642 004010 655 004011 663 004022 665 004056 668 004065 672 004066 682 004070 684 004071 685 004074 692 004141 694 004142 699 004144 704 004147 705 004151 708 004164 709 004215 713 004221 714 004224 715 004245 716 004274 717 004275 718 004323 723 004327 725 004361 726 004402 728 004410 731 004413 732 004421 735 004425 737 004452 740 004473 741 004522 744 004523 750 004525 751 004526 752 004551 755 004555 758 004560 759 004562 760 004564 762 004565 763 004570 764 004600 765 004605 766 004607 767 004611 768 004632 770 004633 774 004634 783 004650 785 004652 787 004656 789 004712 790 004717 791 004732 792 004734 794 004735 795 004736 798 004771 801 005021 802 005034 805 005035 811 005037 813 005046 815 005050 817 005054 819 005055 822 005060 824 005061 827 005064 829 005065 834 005066 840 005104 844 005107 848 005122 849 005124 850 005126 852 005134 854 005157 855 005166 856 005200 859 005203 862 005210 863 005212 864 005217 866 005222 867 005224 868 005236 873 005241 874 005242 881 005272 882 005333 885 005402 887 005417 888 005420 946 005421 949 005427 952 005443 955 005460 958 005470 960 005503 962 005531 965 005555 968 005576 972 005577 976 005601 977 005607 978 005616 979 005620 980 005622 981 005624 982 005650 984 005655 985 005657 987 005662 989 005666 996 005670 998 005673 999 005701 1000 005704 1002 005706 1005 005711 1017 005713 1025 005750 1027 005753 1030 005754 1032 005755 1035 005756 1038 005757 1042 005774 1045 006001 1047 006002 1051 006003 1053 006021 1055 006022 1057 006023 1061 006041 1063 006042 1067 006045 1068 006050 1071 006051 1080 006064 1082 006065 1084 006066 1086 006104 1088 006105 1090 006106 1093 006124 1098 006125 1106 006126 1108 006131 1110 006132 1113 006133 1120 006151 1122 006152 1125 006153 1129 006171 1137 006172 1140 006173 1141 006174 1142 006201 1143 006203 1144 006204 1245 006205 1258 006207 1263 006237 1264 006265 1265 006270 1267 006300 1270 006301 1271 006311 1274 006327 1279 006332 1280 006343 1288 006346 1289 006350 1291 006354 1292 006361 1294 006422 1296 006424 1300 006425 1309 006436 1310 006461 1313 006465 1314 006475 1317 006501 1318 006527 1321 006533 1322 006543 1325 006561 1330 006565 1331 006574 1332 006617 1339 006623 1340 006625 1342 006630 1343 006635 1345 006676 1347 006700 1353 006701 1358 006702 1359 006704 1360 006706 1361 006710 1362 006713 1364 006715 1365 006720 1367 006722 1368 006727 1372 006730 1375 006732 1376 006735 1391 006736 1428 006744 1429 006746 1430 006765 1431 006767 1432 006773 1433 007000 1434 007010 1436 007011 1437 007012 1438 007014 1439 007022 1440 007032 1442 007033 1443 007034 1444 007041 1445 007051 1448 007052 1449 007057 1450 007062 1451 007063 1456 007066 1458 007067 1459 007070 1461 007075 1462 007112 1464 007113 1466 007117 1468 007122 1471 007130 1472 007132 1473 007152 1474 007154 1475 007163 1476 007172 1479 007173 1480 007200 1481 007203 1482 007207 1483 007217 1484 007222 1486 007223 1487 007231 1489 007274 1491 007302 1493 007305 1494 007314 1499 007315 1503 007316 1505 007333 ----------------------------------------------------------- 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