COMPILATION LISTING OF SEGMENT window_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/13/87 1328.1 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright (c) 1986 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 9* * * 10* * Copyright (c) 1972 by Massachusetts Institute of * 11* * Technology and Honeywell Information Systems, Inc. * 12* * * 13* *********************************************************** */ 14 15 16 17 /****^ HISTORY COMMENTS: 18* 1) change(81-01-01,Margulies), approve(), audit(), install(): 19* These are the journalization comments from window_io_video_, which is 20* now incorporated in this module. 21* 22* video operations for window_io_ 23* 24* asyncronous event management in this program is different 25* from that in terminal control. In terminal control, the program can 26* detect something happening during a block, and then give up on what it was 27* going to write and recompute based on the state after the async occurence. 28* Here, terminal controlwill do what we call it to do, 29* unless a nonlocal goto is used to unwind the terminal control operation. 30* This is a trifle dangerous, as the calls to terminal control are 31* nonatomic ... they may consist of several distinct terminal operations. 32* 33* NB: OP_WRITE_SYNC_GET_CHARS_NO_ECHO is obsolete. In the current 34* terminal control implementation, it is equivalent to a WRITE, followed 35* by a SYNC, followed by a GET. The window operation, and for that matter 36* the tc operation, may become meaningful again in a later implementation, 37* and there was not time to gut the callers. 38* 39* Modified 21 January 1982 by Chris Jones to re-enable quits after 40* reconnection 41* 42* Modified 16 August 1982 by William M. York to fix W_GET_ECHOED_CHARS so 43* it doesn't try to update the cursor position after an async event occurs 44* in the current window. Since the cursor has moved somewhere else, this 45* caused the cursor state to become invalid. 46* 47* Modified 16 September 1982 by WMY to fix W_GET_ECHOED_CHARS to handle the 48* case where tc_ returned because of async interruption and the input buffer 49* happened to be full. This bug caused looping and process death. 50* 51* Modified 21 September 1982 by WMY fix a bug in W_SYNC which passed the 52* wrong structure down to tc_. 53* 54* Modified 29 October 1982 by WMY to update the attach_data.col after a 55* successful OP_WRITE_SYNC_GET_CHARS_NO_ECHO to include the prompt. 56* 2) change(81-01-01,WMY), approve(), audit(), install(): 57* Set status on raw output calls, but ignore that status when the next raw 58* output call comes in. 59* 60* Modified 1 October 1983 by Jon A. Rochlis to add support for partial 61* screen width windows. 62* 63* Modified 30 September 1983 by Jon A. Rochlis to add support for partial 64* screen width windows to create_window. 65* 66* Modified 9 October 1983 by JR to map error_table_$undefined_order_request 67* into video_et_$wsys_not_invoked. 68* 69* Modified 9 October 1983 by Jon A. Rochlis to add first cut 70* at window_$edit_line. 71* 72* Modifed December 1983 - February 1984 by Bill Gimbel and JR to move 73* window_io_video_ to this module. 74* 75* Modified 27 December 1984 by JR to only update attach_data state if calls 76* to tc_ were successful. This prevent inconsistent states which could 77* hang a process. 78* 79* Modified 7 February 1985 by JR to store the current ips mask in tc's 80* request structure so tc_block can restore it before going blocked. 81* 82* user interface to extended video operations 83* 3) change(87-02-13,LJAdams), approve(87-03-19,MCR7642), 84* audit(87-04-24,Gilcrease), install(87-05-14,MR12.1-1030): 85* The entry points insert_text and overwrite_text are calling 86* require_cursor_valid after masking IPS signals. If the cursor position is 87* invalid because the write_raw_text entry was previously called, the 88* require_cursor_valid procedure will exit window_ leaving the signals 89* masked. (phx20711). 90* END HISTORY COMMENTS */ 91 92 93 94 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 95 window_: 96 procedure; 97 return; 98 99 declare 1 simple_r aligned like request_header; 100 101 declare real_window_iocb_ptr pointer; 102 declare target_iocbp pointer; 103 declare this_request_ptr pointer; 104 declare this_is_an_input_request bit (1) aligned; 105 declare saved_ips_mask bit (36) aligned; 106 declare cleanup condition; 107 108 declare ( 109 hcs_$set_ips_mask, 110 hcs_$reset_ips_mask 111 ) entry (bit (36) aligned, bit (36) aligned); 112 113 114 declare ( 115 video_et_$window_status_pending, 116 video_et_$bad_window_id, 117 video_et_$cursor_position_undefined, 118 video_et_$string_not_printable 119 ) external static fixed bin (35); 120 121 declare ( 122 Iocb_ptr pointer, 123 Distance fixed bin, 124 Line fixed bin, 125 Col fixed bin, 126 N_lines fixed bin, 127 N_cols fixed bin, 128 Count fixed bin, 129 N_to_get fixed bin (21), 130 Text character (*), 131 Prompt character (*), 132 Text_got fixed bin (21), 133 Break character (1) varying, 134 Code fixed bin (35) 135 ) parameter; 136 137 declare (addcharno, addr, character, clock, currentsize, length, ltrim, max, null, rtrim, string, substr, 138 unspec, verify) builtin; 139 140 position_cursor: 141 entry (Iocb_ptr, Line, Col, Code); 142 dcl (line, col) fixed bin; 143 call get_attach_data_ptr; 144 145 line = Line; 146 col = Col; 147 pc_common: 148 on cleanup call clean_things_up (); 149 call setup_request (addr (simple_r), OP_POSITION_CURSOR, line, col); 150 call do_request (addr (simple_r)); 151 152 if Code = 0 153 then do; /* only update state, if the operation worked */ 154 attach_data.line = line; 155 attach_data.col = col; 156 attach_data.cursor_valid = "1"b; 157 end; 158 go to done; 159 160 position_cursor_rel: 161 entry (Iocb_ptr, Line, Col, Code); 162 163 call get_attach_data_ptr; 164 call require_cursor_valid; 165 166 line = Line + attach_data.line; 167 col = Col + attach_data.col; 168 goto pc_common; 169 170 change_column: 171 entry (Iocb_ptr, Col, Code); 172 call get_attach_data_ptr; 173 call require_cursor_valid; 174 line = attach_data.line; 175 col = Col; 176 go to pc_common; 177 178 change_line: 179 entry (Iocb_ptr, Line, Code); 180 call get_attach_data_ptr; 181 call require_cursor_valid; 182 col = attach_data.col; 183 line = Line; 184 go to pc_common; 185 186 declare 1 rqr aligned like request_clear_region; 187 188 clear_window: 189 entry (Iocb_ptr, Code); 190 191 clear_window_label: 192 call get_attach_data_ptr; 193 on cleanup call clean_things_up (); 194 call setup_request (addr (rqr), OP_CLEAR_REGION, 1, 1); 195 196 rqr.rows = attach_data.current.rows; 197 rqr.columns = attach_data.current.columns; 198 199 call do_request (addr (rqr)); 200 if Code = 0 201 then do; 202 attach_data.line, attach_data.col = 1; 203 attach_data.cursor_valid = "1"b; 204 205 /* This is an awful modularity violation since this variable should 206* only be touched by window_io_iox_. However, until there are more 207* control orders for window operations, we are stuck with it. */ 208 attach_data.lines_written_since_read = 0; 209 end; 210 go to done; 211 212 clear_to_end_of_window: 213 entry (Iocb_ptr, Code); 214 215 call get_attach_data_ptr; 216 call require_cursor_valid; 217 if attach_data.col = 1 /* Are we at */ 218 & attach_data.line = 1 /* The Origin? */ 219 then go to clear_window_label; /* Much Easier */ 220 221 on cleanup call clean_things_up (); 222 call setup_request (addr (rqr), OP_CLEAR_REGION, attach_data.line, attach_data.col); 223 /* first approx */ 224 225 if attach_data.col > 1 226 then do; 227 rqr.rows = 1; 228 rqr.columns = attach_data.current.columns - attach_data.col + 1; 229 call do_request (addr (rqr)); /* clear off current line */ 230 if rqr.row < attach_data.current.rows 231 then do; /* now do full-width part */ 232 rqr.columns = attach_data.current.columns; 233 rqr.row = rqr.row + 1; 234 rqr.rows = attach_data.current.rows - attach_data.line; 235 /* + 1 canceled by the row we already got */ 236 rqr.col = 1; 237 if rqr.rows > 1 238 then call do_request (addr (rqr)); 239 end; 240 end; 241 else do; /* start at col 1 */ 242 243 rqr.columns = attach_data.current.columns; 244 rqr.rows = attach_data.current.rows - attach_data.line + 1; 245 if rqr.rows ^< 1 246 then call do_request (addr (rqr)); 247 end; 248 249 if attach_data.col > 1 /* we had to clear end of line */ 250 then do; 251 call clean_things_up (); 252 call setup_request (addr (simple_r), OP_POSITION_CURSOR, attach_data.line, attach_data.col); 253 call do_request (addr (simple_r)); 254 end; /* do */ 255 go to done; 256 257 clear_to_end_of_line: 258 entry (Iocb_ptr, Code); 259 call get_attach_data_ptr; 260 call require_cursor_valid; 261 on cleanup call clean_things_up (); 262 call setup_request (addr (rqr), OP_CLEAR_REGION, attach_data.line, attach_data.col); 263 rqr.rows = 1; 264 rqr.columns = attach_data.current.columns - attach_data.col + 1; 265 call do_request (addr (rqr)); 266 go to done; 267 268 clear_region: 269 entry (Iocb_ptr, Line, Col, N_lines, N_cols, Code); 270 call get_attach_data_ptr; 271 on cleanup call clean_things_up (); 272 call setup_request (addr (rqr), OP_CLEAR_REGION, Line, Col); 273 rqr.extent.rows = N_lines; 274 rqr.extent.columns = N_cols; 275 276 call do_request (addr (rqr)); 277 278 if Code = 0 279 then do; 280 attach_data.col = Col; 281 attach_data.line = Line; 282 attach_data.cursor_valid = "1"b; 283 end; 284 go to done; 285 286 declare 1 rqt aligned like request_text; 287 288 insert_text: 289 entry (Iocb_ptr, Text, Code); 290 291 call get_attach_data_ptr; 292 call require_cursor_valid; 293 on cleanup call clean_things_up (); 294 call setup_request (addr (rqt), OP_INSERT_TEXT, attach_data.line, attach_data.col); 295 go to tx_common; 296 297 overwrite_text: 298 entry (Iocb_ptr, Text, Code); 299 300 call get_attach_data_ptr; 301 call require_cursor_valid; 302 on cleanup call clean_things_up (); 303 call setup_request (addr (rqt), OP_OVERWRITE_TEXT, attach_data.line, attach_data.col); 304 305 tx_common: 306 call validate_text (Text); 307 rqt.text_ptr = addr (Text); 308 rqt.text_length = length (Text); 309 call do_request (addr (rqt)); 310 if Code = 0 311 then attach_data.col = attach_data.col + rqt.text_length; 312 go to done; 313 314 write_raw_text: 315 entry (Iocb_ptr, Text, Code); 316 call get_attach_data_ptr; 317 if attach_data.status_pending & ^attach_data.ignore_status 318 then if unspec (attach_data.status) ^= unspec (W_STATUS_SCREEN_INVALID) 319 then do; 320 Code = video_et_$window_status_pending; 321 goto error_return; 322 end; 323 324 on cleanup call clean_things_up (); 325 call setup_request (addr (rqt), OP_WRITE_RAW, attach_data.line, attach_data.col); 326 if ^attach_data.cursor_valid 327 then do; 328 rqt.row = attach_data.line_origin; /* as good a place as any */ 329 rqt.col = 1; 330 end; 331 rqt.text_ptr = addr (Text); 332 rqt.text_length = length (Text); 333 call do_request (addr (rqt)); 334 335 if Code = 0 336 then do; 337 attach_data.cursor_valid = "0"b; 338 attach_data.status.screen_invalid = "1"b; 339 attach_data.status_pending = "1"b; 340 end; 341 go to done; 342 343 delete_chars: 344 entry (Iocb_ptr, Count, Code); 345 call get_attach_data_ptr; 346 declare 1 rqd aligned like request_delete_chars; 347 call require_cursor_valid; 348 on cleanup call clean_things_up (); 349 call setup_request (addr (rqd), OP_DELETE_CHARS, attach_data.line, attach_data.col); 350 rqd.count = Count; 351 call do_request (addr (rqd)); 352 go to done; 353 354 get_cursor_position: 355 entry (Iocb_ptr, Line, Col, Code); 356 call get_attach_data_ptr; 357 call require_cursor_valid; 358 Line = attach_data.line; 359 Col = attach_data.col; 360 return; 361 362 bell: 363 entry (Iocb_ptr, Code); 364 call get_attach_data_ptr; 365 call require_cursor_valid; 366 on cleanup call clean_things_up (); 367 call setup_request (addr (simple_r), OP_BELL, attach_data.line, attach_data.col); 368 call do_request (addr (simple_r)); 369 go to done; 370 371 declare 1 rqg aligned like request_read; 372 declare rqg_text character (rqg.buffer_length) based (rqg.buffer_ptr); 373 374 get_unechoed_chars: 375 entry (Iocb_ptr, N_to_get, Text, Text_got, Break, Code); 376 call get_attach_data_ptr; 377 on cleanup call clean_things_up (); 378 call setup_request (addr (rqg), OP_GET_CHARS_NO_ECHO, attach_data.line, attach_data.col); 379 /* we don't check the cursor position for unechoed input */ 380 rqg.prompt_ptr = null (); 381 go to get_common; 382 383 get_echoed_chars: 384 entry (Iocb_ptr, N_to_get, Text, Text_got, Break, Code); 385 call get_attach_data_ptr; 386 call require_cursor_valid; 387 on cleanup call clean_things_up (); 388 call setup_request (addr (rqg), OP_GET_CHARS_ECHO, attach_data.line, attach_data.col); 389 rqg.prompt_ptr = null (); 390 391 get_common: 392 Break = ""; 393 rqg.buffer_ptr = addr (Text); 394 rqg.buffer_length = N_to_get; 395 rqg.breaks = attach_data.breaks; 396 397 Text_got = 0; 398 399 get_some_more: 400 rqg.returned_break_flag = "0"b; 401 rqg.returned_length = 0; 402 rqg.col = attach_data.col + attach_data.column_origin - 1; 403 404 call do_request (addr (rqg)); 405 406 Text_got = Text_got + rqg.returned_length; 407 408 /* This gets complicated. If something asynchronous has happened 409* in this window, we don't really know where the cursor is, 410* and we certainly shouldn't set the cursor position to our now 411* invalid idea of where it is. If it happened in some other 412* window, update the cursor state and get some more chars. */ 413 414 if rqg.async_interruption /* ASSERT cannot be on if returned_break_flag is on */ 415 then do; /* something went BONG */ 416 if rqg.this_window 417 then do; 418 attach_data.status.async_change = "1"b; 419 attach_data.status_pending = "1"b; 420 421 /* If we got something, return it and q status for next call. 422* if we got nothing, might as well return the status this call. 423* but never return status AND characters. */ 424 425 if Text_got = 0 426 then Code = video_et_$window_status_pending; 427 go to done; 428 end; 429 else do; /* Some Other Window */ 430 431 rqg.buffer_ptr = addcharno (rqg.buffer_ptr, rqg.returned_length); 432 rqg.buffer_length = rqg.buffer_length - rqg.returned_length; 433 434 /* update the cursor state so far */ 435 if rqg.operation = OP_GET_CHARS_ECHO 436 then attach_data.col = attach_data.col + rqg.returned_length; 437 438 if rqg.operation = OP_WRITE_SYNC_GET_CHARS_NO_ECHO 439 then do; /* don't reprint prompt, just read response */ 440 rqg.operation = OP_GET_CHARS_NO_ECHO; 441 attach_data.col = rqg.col + rqg.prompt_length; 442 end; 443 444 /* At this point we know that tc_ level returned 445* because something asynchronous happened in another 446* window. If the user was in the phantom column at the 447* time, the call to tc_ returned enough characters to 448* fill our caller's buffer, so return. */ 449 450 if rqg.returned_length = rqg.buffer_length 451 then goto done; 452 else goto get_some_more; 453 454 end; 455 end; /* The async term case */ 456 457 /* no async, so update the cursor position */ 458 if rqg.operation = OP_GET_CHARS_ECHO 459 then do; 460 attach_data.col = attach_data.col + rqg.returned_length; 461 if rqg.returned_break_flag & (rqg.returned_length > 0) 462 then attach_data.col = attach_data.col - 1; /* The last one isn't really there */ 463 end; 464 else if rqg.operation = OP_WRITE_SYNC_GET_CHARS_NO_ECHO 465 then attach_data.col = rqg.col + rqg.prompt_length; 466 467 if rqg.returned_break_flag & rqg.returned_length > 0 468 then do; 469 Text_got = Text_got - 1; 470 Break = substr (rqg_text, rqg.returned_length, 1); 471 end; 472 go to done; 473 474 get_one_unechoed_char: 475 get_one_unechoed: 476 entry (Iocb_ptr, One, Block_flag, Code); 477 478 declare One character (1) varying; 479 declare one_char character (1); 480 declare Block_flag bit (1) aligned; 481 482 call get_attach_data_ptr; 483 call require_cursor_valid; 484 on cleanup call clean_things_up (); 485 call setup_request (addr (rqg), OP_READ_ONE, attach_data.line, attach_data.col); 486 487 rqg.buffer_ptr = addr (one_char); 488 rqg.buffer_length = 1; 489 490 one_some_more: /* returned_break_flag is the block flag on input, and the 491* break_flag on output */ 492 rqg.returned_break_flag = Block_flag; 493 call do_request (addr (rqg)); 494 495 /* Several things could have happened in the call to tc_. 496* 1) called in with block flag off, no asyncronosity possible cause we 497* didn't block regardless of what we got back. 498* 2) called in with block flag, nothing async happens while blocked, got char. 499* 3) called in with block flag, async event happend, no char back. */ 500 501 if rqg.async_interruption 502 then if rqg.this_window 503 then do; 504 attach_data.status.async_change = "1"b; 505 attach_data.status_pending = "1"b; 506 Code = video_et_$window_status_pending; 507 go to done; 508 end; 509 else goto one_some_more; 510 511 if ^Block_flag & ^rqg.returned_break_flag 512 then One = ""; 513 else One = one_char; 514 515 go to done; 516 517 write_sync_read: 518 entry (Iocb_ptr, Prompt, N_to_get, Text, Text_got, Break, Code); 519 call get_attach_data_ptr; 520 call require_cursor_valid; 521 on cleanup call clean_things_up (); 522 call setup_request (addr (rqg), OP_WRITE_SYNC_GET_CHARS_NO_ECHO, attach_data.line, attach_data.col); 523 524 rqg.prompt_ptr = addr (Prompt); 525 rqg.prompt_length = length (Prompt); 526 527 goto get_common; 528 529 sync: 530 entry (Iocb_ptr, Code); 531 call get_attach_data_ptr; 532 on cleanup call clean_things_up (); 533 call setup_request (addr (rqg), OP_GET_CHARS_NO_ECHO, attach_data.line, attach_data.col); 534 rqg.buffer_length = 0; 535 call do_request (addr (rqg)); /* lengths are 0 */ 536 go to done; 537 538 /* This is somewhat of a kludge, but is a first cut at allowing the 539* video system line editor to be called from a window_ context, rather than 540* an iox_ context. It is very un-window_ like, since we don't make a control 541* order for tc_io_, but instead call window_io_iox_ directly. When 542* the editor moves out of window_io_iox_ and window_io_ is taught about 543* this then it can be changed. All we are at the moment is a blown up 544* transfer vector! */ 545 546 edit_line: 547 entry (Iocb_ptr, Window_edit_line_info_ptr, Buffer_ptr, Buffer_len, N_read, Code); 548 549 declare Window_edit_line_info_ptr 550 pointer parameter; 551 declare Buffer_ptr pointer parameter; 552 declare Buffer_len fixed binary (21) parameter; 553 declare N_read fixed binary (21) parameter; 554 555 declare window_io_iox_$edit_line entry (ptr, ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 556 557 call get_attach_data_ptr; 558 call require_cursor_valid; 559 call window_io_iox_$edit_line (real_window_iocb_ptr /* set by get_attach_data_ptr */, Window_edit_line_info_ptr, 560 Buffer_ptr, Buffer_len, N_read, Code); 561 return; 562 563 scroll_region: 564 entry (Iocb_ptr, Line, N_lines, Distance, Code); 565 566 declare 1 rsr aligned like request_scroll_region; 567 call get_attach_data_ptr; 568 call require_cursor_valid; 569 on cleanup call clean_things_up (); 570 call setup_request (addr (rsr), OP_SCROLL_REGION, 1, 1); 571 /* The coords are not interesting */ 572 573 rsr.n_lines = N_lines; 574 rsr.distance = Distance; 575 rsr.start_line = Line + attach_data.line_origin - 1; 576 call do_request (addr (rsr)); 577 go to done; 578 579 /* Create and Destroy utilities -- the beginnings of the window 580* side of desk management. */ 581 582 declare window_list_ptr pointer; 583 declare 1 window_list aligned based (window_list_ptr), 584 2 sentinel character (4) aligned, 585 2 n_windows fixed bin, 586 2 window_names (wl_n_windows refer (window_list.n_windows)) character (32) unaligned; 587 588 declare wl_n_windows fixed bin; 589 declare (i, j) fixed bin; 590 declare code fixed bin (35); 591 declare value_$get_data entry (pointer, bit (36) aligned, character (*), pointer, pointer, 592 fixed binary (18), fixed binary (35)); 593 declare value_$set_data entry (pointer, bit (36) aligned, character (*), pointer, fixed binary (18), 594 pointer, pointer, fixed binary (18), fixed binary (35)); 595 declare ( 596 error_table_$null_info_ptr, 597 error_table_$unimplemented_version 598 ) fixed bin (35) ext static; 599 declare video_et_$switch_not_window 600 fixed bin (35) external static; 601 get_window_list: 602 procedure (terminal_name); 603 declare terminal_name character (*); 604 declare value_name character (45) /* 32 + 13 */; 605 declare no_create bit (1) aligned; 606 607 declare WINDOW_LIST_VALUE_NAME_SUFFIX 608 character (12) init ("window_list_") internal static options (constant); 609 610 no_create = "0"b; 611 go to common; 612 613 get_window_list$$no_create: 614 entry (terminal_name); 615 no_create = "1"b; 616 617 common: 618 window_list_ptr = null (); 619 value_name = rtrim (terminal_name) || WINDOW_LIST_VALUE_NAME_SUFFIX; 620 621 call value_$get_data (null (), "10"b /* perprocess */, value_name, get_system_free_area_ (), window_list_ptr, 622 (0), code); 623 624 if window_list_ptr = null () 625 then do; 626 if no_create 627 then return; 628 wl_n_windows = 1; 629 allocate window_list set (window_list_ptr); 630 window_list.sentinel = "WNDL"; 631 window_list.n_windows = 0; /* careful here, to avoid pl1 illegalities */ 632 end; 633 return; 634 635 store_window_list: 636 entry (terminal_name); 637 declare size_of_window_list fixed bin (18); 638 639 value_name = rtrim (terminal_name) || WINDOW_LIST_VALUE_NAME_SUFFIX; 640 641 if window_list_ptr ^= null () 642 then size_of_window_list = currentsize (window_list); 643 else size_of_window_list = 0; 644 call value_$set_data (null (), "10"b /* perprocess */, value_name, window_list_ptr, size_of_window_list, 645 null (), null (), (0), (0)); /* we ignore the code */ 646 if window_list_ptr ^= null () 647 then free window_list; 648 return; 649 end; 650 651 652 create: 653 create_window: 654 entry (Terminal_iocb_ptr, Window_info_ptr, Window_iocb_ptr, Code); 655 declare Terminal_iocb_ptr pointer parameter; 656 declare terminal_iocb_ptr pointer; 657 declare Window_iocb_ptr pointer parameter; 658 declare Window_info_ptr pointer parameter; 659 660 terminal_iocb_ptr = Terminal_iocb_ptr; 661 window_position_info_ptr = Window_info_ptr; 662 Code = 0; 663 if window_position_info_ptr = null () | Window_iocb_ptr = null () | Terminal_iocb_ptr = null () 664 then do; 665 Code = error_table_$null_info_ptr; 666 return; 667 end; 668 669 if window_position_info.version ^= window_position_info_version 670 then do; 671 Code = error_table_$unimplemented_version; 672 return; 673 end; 674 675 begin; 676 declare atd character (128); 677 678 atd = "window_io_ " || iocb_name (terminal_iocb_ptr) || " -first_line " 679 || ltrim (rtrim (character (window_position_info.origin.line))); 680 681 if window_position_info.height > 0 682 then atd = rtrim (atd) || " -n_lines " || ltrim (rtrim (character (window_position_info.height))); 683 684 if window_position_info.origin.column > 0 685 then atd = rtrim (atd) || " -first_column " 686 || ltrim (rtrim (character (window_position_info.origin.column))); 687 688 if window_position_info.width > 0 689 then atd = rtrim (atd) || " -n_columns " || ltrim (rtrim (character (window_position_info.width))); 690 691 call iox_$attach_ptr (Window_iocb_ptr, atd, null (), Code); 692 if Code ^= 0 693 then return; 694 end; 695 696 call iox_$open (Window_iocb_ptr, Stream_input_output, ""b, Code); 697 if Code ^= 0 698 then do; 699 call iox_$detach_iocb (Window_iocb_ptr, (0)); 700 return; 701 end; 702 703 call get_window_list$$no_create (iocb_name (terminal_iocb_ptr)); 704 begin; 705 declare new_window_list_ptr pointer; 706 707 if window_list_ptr = null () 708 then wl_n_windows = 1; 709 else wl_n_windows = window_list.n_windows + 1; 710 allocate window_list set (new_window_list_ptr); 711 new_window_list_ptr -> window_list.sentinel = "WNDL"; 712 if window_list_ptr ^= null () 713 then do; 714 do i = 1 to window_list.n_windows; 715 new_window_list_ptr -> window_list.window_names (i) = window_list.window_names (i); 716 end; 717 free window_list; 718 end; 719 else i = 1; 720 window_list_ptr = new_window_list_ptr; 721 window_list.window_names (i) = iocb_name (Window_iocb_ptr); 722 end; /* the begin block */ 723 call store_window_list (iocb_name (terminal_iocb_ptr)); 724 725 return; 726 727 destroy: 728 destroy_window: 729 entry (Window_iocb_ptr, Code); 730 731 call iox_$control (Window_iocb_ptr, "get_terminal_iocb_ptr", terminal_iocb_ptr, Code); 732 if Code ^= 0 733 then return; 734 735 call get_window_list (iocb_name (terminal_iocb_ptr)); 736 737 do i = 1 to window_list.n_windows; 738 if window_list.window_names (i) = iocb_name (Window_iocb_ptr) 739 then do; 740 if i < window_list.n_windows 741 then do j = i + 1 to window_list.n_windows; 742 window_list.window_names (j - 1) = window_list.window_names (j); 743 end; 744 go to SUCCESS; 745 end; 746 end; 747 Code = video_et_$switch_not_window; 748 return; 749 750 SUCCESS: 751 call iox_$close (Window_iocb_ptr, (0)); 752 call iox_$detach_iocb (Window_iocb_ptr, (0)); 753 754 begin; 755 declare new_window_list_ptr pointer; 756 wl_n_windows = window_list.n_windows - 1; 757 if wl_n_windows = 0 758 then free window_list; 759 else do; 760 allocate window_list set (new_window_list_ptr); 761 do i = 1 to wl_n_windows; 762 new_window_list_ptr -> window_list.window_names (i) = window_list.window_names (i); 763 end; 764 free window_list; 765 window_list_ptr = new_window_list_ptr; 766 end; 767 end; /* the begin */ 768 769 call store_window_list (iocb_name (terminal_iocb_ptr)); 770 return; 771 772 destroy_all: 773 destroy_all_windows: 774 entry (Terminal_iocb_ptr); /* No code interesting */ 775 declare iocb_ptr pointer; 776 777 terminal_iocb_ptr = Terminal_iocb_ptr; 778 call get_window_list$$no_create (iocb_name (terminal_iocb_ptr)); 779 if window_list_ptr = null 780 then return; 781 do i = 1 to window_list.n_windows; 782 iocb_ptr = find_iocb (window_list.window_names (i)); 783 call iox_$close (iocb_ptr, (0)); 784 call iox_$detach_iocb (iocb_ptr, (0)); 785 end; 786 free window_list; 787 call store_window_list (iocb_name (terminal_iocb_ptr)); 788 return; 789 790 iocb_name: 791 procedure (iocb_ptr) returns (character (32)) reducible; 792 declare iocb_ptr pointer; 793 return (iocb_ptr -> iocb.name); 794 end iocb_name; 795 796 find_iocb: 797 procedure (iocb_name) returns (pointer); 798 declare iocb_ptr pointer; 799 declare iocb_name character (*); 800 801 call iox_$find_iocb (iocb_name, iocb_ptr, (0)); 802 return (iocb_ptr); 803 end find_iocb; 804 805 806 setup_request: 807 procedure (r_header_ptr, op, l, c); 808 declare r_header_ptr pointer; 809 declare (op, l, c) fixed bin; 810 811 this_request_ptr, request_ptr = r_header_ptr; 812 813 attach_data.async_count = attach_data.async_count + 1; 814 call hcs_$set_ips_mask (""b, saved_ips_mask); 815 request_header.saved_ips_mask = saved_ips_mask; 816 817 /* If there is status pending for this window, return a code. 818* Raw output handles its own status below. */ 819 820 if (op ^= OP_WRITE_RAW) & attach_data.status_pending & ^attach_data.ignore_status 821 then do; 822 Code = video_et_$window_status_pending; 823 go to done; 824 end; 825 826 this_is_an_input_request = 827 (op = OP_GET_CHARS_ECHO | op = OP_GET_CHARS_NO_ECHO | op = OP_WRITE_SYNC_GET_CHARS_NO_ECHO 828 | op = OP_READ_ONE); 829 830 request_header.sentinel = REQUEST_SENTINEL; 831 request_header.window_id = attach_data.window_id; 832 request_header.request_id = clock (); 833 request_header.operation = op; 834 request_header.row = l + attach_data.line_origin - 1; 835 request_header.col = c + attach_data.column_origin - 1; 836 string (request_header.flags) = ""b; 837 838 end setup_request; 839 840 do_request: 841 procedure (request_ptr); 842 declare request_ptr pointer; 843 844 target_iocbp = attach_data.target_iocb_ptr; 845 846 /* terminal control will unmask if it blocks. */ 847 /* we must just note if it signals */ 848 /* the condition handler is elsewhere established to keep this block quick */ 849 /* but this is the right place for the handler to destect ips mask changes 850* which happen while down in tc. Sigh, I wonder if the cost is worth it -- 851* JR 2/10/85 */ 852 853 on cleanup 854 begin; 855 if request_header.saved_ips_mask ^= saved_ips_mask 856 then saved_ips_mask = request_header.saved_ips_mask; 857 end; 858 859 call iox_$control (target_iocbp, "window_operation", request_ptr, Code); 860 if Code = video_et_$bad_window_id 861 then begin; /* reconnection, get us a new id if we can */ 862 declare 1 auto_desk_info aligned like tc_desk_window_info; 863 auto_desk_info.window_id = attach_data.window_id; 864 auto_desk_info.first_row = attach_data.line_origin; 865 auto_desk_info.n_rows = attach_data.current.rows; 866 auto_desk_info.first_column = attach_data.column_origin; 867 auto_desk_info.n_columns = attach_data.current.columns; 868 auto_desk_info.window_iocb_ptr = real_window_iocb_ptr; 869 call iox_$control (target_iocbp, "check_out_window", addr (auto_desk_info), (0)); 870 /* JustinCase */ 871 call iox_$control (target_iocbp, "check_in_window", addr (auto_desk_info), Code); 872 if Code ^= 0 873 then go to terminal_control_died; 874 attach_data.window_id = auto_desk_info.window_id; 875 attach_data.status_pending = "1"b; 876 attach_data.status.screen_invalid = "1"b; 877 call iox_$control (target_iocbp, "quit_enable", null (), (0)); 878 Code = video_et_$window_status_pending; 879 go to done; 880 end; 881 882 if ^this_is_an_input_request & request_ptr -> request_header.async_interruption 883 & request_ptr -> request_header.this_window 884 then go to ASYNC_EVENT; 885 end do_request; 886 887 clean_things_up: 888 procedure; 889 890 attach_data.async_count = max (0, attach_data.async_count - 1); 891 if saved_ips_mask ^= ""b 892 then call hcs_$reset_ips_mask (saved_ips_mask, (""b)); 893 894 saved_ips_mask = ""b; 895 896 return; 897 898 end clean_things_up; 899 900 /* IMPORTANT: This routine must be invoked before we mask and hack the async 901* counter because it branches to "error_return", not "done" */ 902 903 require_cursor_valid: 904 procedure; 905 if ^attach_data.cursor_valid 906 then do; 907 Code = video_et_$cursor_position_undefined; 908 go to error_return; 909 end; 910 end require_cursor_valid; 911 912 /* IMPORTANT: This routine must be invoked before we mask and hack the async 913* counter because it branches to "error_return", not "done" */ 914 915 get_attach_data_ptr: 916 procedure; 917 918 dcl error_table_$undefined_order_request 919 fixed bin (35) ext static; 920 dcl video_et_$wsys_not_invoked 921 fixed bin (35) ext static; 922 923 Code = 0; 924 real_window_iocb_ptr = null (); 925 saved_ips_mask = ""b; 926 927 call iox_$control (Iocb_ptr, "get_window_iocb_ptr", real_window_iocb_ptr, Code); 928 if Code = error_table_$undefined_order_request | real_window_iocb_ptr = null () 929 /* discard_ will return a zero error code! */ 930 then Code = video_et_$wsys_not_invoked; /* much better */ 931 if Code ^= 0 932 then goto error_return; 933 934 attach_data_ptr = real_window_iocb_ptr -> iocb.attach_data_ptr; 935 return; 936 937 end get_attach_data_ptr; 938 939 terminal_control_died: /* insert debugging code here */ 940 go to done; 941 942 /* Only branch here if we haven't masked. This is needed because we might 943* not even have a valid iocb at this point, so we can't muck with attach 944* data! */ 945 946 error_return: 947 return; 948 done: 949 revert cleanup; /* At least keep things from getting more confused */ 950 call clean_things_up (); 951 return; 952 953 ASYNC_EVENT: 954 on cleanup call clean_things_up; 955 call setup_request (addr (simple_r), OP_GET_CURSOR_POSITION, (0), (0)); 956 957 call do_request (addr (simple_r)); 958 if simple_r.row ^< attach_data.line_origin /* after the top */ 959 & simple_r.row ^> (attach_data.line_origin + attach_data.current.rows - 1) 960 /* and before the bottom */ 961 then do; /* if the cursor landed in this window */ 962 attach_data.line = simple_r.row; /* note where */ 963 attach_data.col = simple_r.col; 964 end; 965 966 attach_data.status_pending = "1"b; 967 attach_data.status.async_change = "1"b; 968 969 Code = video_et_$window_status_pending; 970 go to done; 971 972 validate_text: 973 procedure (text); 974 declare text character (*); 975 declare printable character (96) 976 init ( 977 " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()-_=+`~\|{}'"";:/?.>,<[]!" 978 ) internal static options (constant); 979 980 if verify (text, printable) > 0 981 then do; 982 Code = video_et_$string_not_printable; 983 go to done; 984 end; 985 end validate_text; 986 1 1 /* begin include file tc_desk_info_.incl.pl1 BIM June 1981 */ 1 2 /* Modified 1 October 1983 by Jon A. Rochlis to add support for partial 1 3* screen width windows */ 1 4 /* Modified 28 March 1984 by JR to add window_iocb_ptr so tc_ can inform 1 5* window_ of events such as reconnection, by doing set_window_status control 1 6* orders. */ 1 7 1 8 /* internal interface */ 1 9 1 10 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 1 11 /* requests to desk management, first pass implementation */ 1 12 1 13 declare tc_desk_info_ptr pointer; 1 14 declare 1 tc_desk_window_info aligned based (tc_desk_info_ptr), 1 15 2 first_row fixed bin, /* top row of window */ 1 16 2 n_rows fixed bin, /* How many rows */ 1 17 2 first_column fixed bin, /* Fist column of window */ 1 18 2 n_columns fixed bin, /* How many columns */ 1 19 2 window_id bit (36) aligned, 1 20 2 window_iocb_ptr ptr; 1 21 1 22 /* used in calls to terminal control to establish rearrange, 1 23* and inquire about windows */ 1 24 1 25 /* end include file tc_desk_info_.incl.pl1 */ 987 988 2 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 2 2 2 3 /* Written 05/04/78 by C. D. Tavares */ 2 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 2 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 2 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 2 7 2 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 2 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 2 10 iox_$close entry (pointer, fixed bin (35)), 2 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 2 12 iox_$delete_record entry (pointer, fixed bin (35)), 2 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 2 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 2 15 iox_$err_not_attached entry options (variable), 2 16 iox_$err_not_closed entry options (variable), 2 17 iox_$err_no_operation entry options (variable), 2 18 iox_$err_not_open entry options (variable), 2 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 2 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 2 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 2 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 2 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 2 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 2 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 2 28 iox_$propagate entry (pointer), 2 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 2 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 2 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 2 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 2 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 2 40 2 41 dcl (iox_$user_output, 2 42 iox_$user_input, 2 43 iox_$user_io, 2 44 iox_$error_output) external static pointer; 2 45 2 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 989 990 3 1 /* Begin include file ..... iox_modes.incl.pl1 */ 3 2 3 3 /* Written by C. D. Tavares, 03/17/75 */ 3 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 3 5 3 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 3 7 ("stream_input", "stream_output", "stream_input_output", 3 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 3 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 3 10 "direct_input", "direct_output", "direct_update"); 3 11 3 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 3 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 3 14 3 15 dcl (Stream_input initial (1), 3 16 Stream_output initial (2), 3 17 Stream_input_output initial (3), 3 18 Sequential_input initial (4), 3 19 Sequential_output initial (5), 3 20 Sequential_input_output initial (6), 3 21 Sequential_update initial (7), 3 22 Keyed_sequential_input initial (8), 3 23 Keyed_sequential_output initial (9), 3 24 Keyed_sequential_update initial (10), 3 25 Direct_input initial (11), 3 26 Direct_output initial (12), 3 27 Direct_update initial (13)) fixed bin int static options (constant); 3 28 3 29 /* End include file ..... iox_modes.incl.pl1 */ 991 992 4 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 4 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 4 3* version number to IOX2. */ 4 4 /* format: style2 */ 4 5 4 6 dcl 1 iocb aligned based, /* I/O control block. */ 4 7 2 version character (4) aligned, /* IOX2 */ 4 8 2 name char (32), /* I/O name of this block. */ 4 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 4 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 4 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 4 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 4 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 4 14 2 reserved bit (72), /* Reserved for future use. */ 4 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 4 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 4 17 /* open(p,mode,not_used,s) */ 4 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 4 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 4 20 /* get_line(p,bufptr,buflen,actlen,s) */ 4 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 4 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 4 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 4 24 /* put_chars(p,bufptr,buflen,s) */ 4 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 4 26 /* modes(p,newmode,oldmode,s) */ 4 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 4 28 /* position(p,u1,u2,s) */ 4 29 2 control entry (ptr, char (*), ptr, fixed (35)), 4 30 /* control(p,order,infptr,s) */ 4 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 4 32 /* read_record(p,bufptr,buflen,actlen,s) */ 4 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 4 34 /* write_record(p,bufptr,buflen,s) */ 4 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 4 36 /* rewrite_record(p,bufptr,buflen,s) */ 4 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 4 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 4 39 /* seek_key(p,key,len,s) */ 4 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 4 41 /* read_key(p,key,len,s) */ 4 42 2 read_length entry (ptr, fixed (21), fixed (35)), 4 43 /* read_length(p,len,s) */ 4 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 4 45 /* open_file(p,mode,desc,not_used,s) */ 4 46 2 close_file entry (ptr, char (*), fixed bin (35)), 4 47 /* close_file(p,desc,s) */ 4 48 2 detach entry (ptr, char (*), fixed bin (35)); 4 49 /* detach(p,desc,s) */ 4 50 4 51 declare iox_$iocb_version_sentinel 4 52 character (4) aligned external static; 4 53 4 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 993 994 5 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 5 2 /* format: style3 */ 5 3 5 4 /* Modified 26 January 1982 by William York to add the set_more_handler 5 5* and reset_more_handler control orders. */ 5 6 /* Modified October 1982 by WMY to add set and get_token_characters, 5 7* set and get_more_prompt. */ 5 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 5 9* structure. */ 5 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 5 11* partial screen width windows. */ 5 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 5 13* This should be removed when window_info.incl.pl1 is created. */ 5 14 /* Modified 29 February 1984 by Barmar to add version 1 5 15* get_editor_key_bindings_info. */ 5 16 /* Modified 1 March 1984 by Barmar to add version 1 5 17* set_editor_key_bindings_info. */ 5 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 5 19* line_editor_key_bindings_info, which includes the name, description, and 5 20* info path */ 5 21 5 22 /* structure for the set_window_info and get_window_info 5 23* control orders. */ 5 24 5 25 dcl 1 window_position_info 5 26 based (window_position_info_ptr), 5 27 2 version fixed bin, 5 28 2 origin, 5 29 3 column fixed bin, 5 30 3 line fixed bin, 5 31 2 extent, 5 32 3 width fixed bin, 5 33 3 height fixed bin; 5 34 5 35 dcl (window_position_info_version, window_position_info_version_1) 5 36 fixed bin internal static init (1) options (constant); 5 37 dcl window_position_info_ptr 5 38 pointer; 5 39 5 40 /* structure for the set_window_status and get_window_status 5 41* control orders */ 5 42 5 43 declare window_status_info_ptr 5 44 pointer; 5 45 declare 1 window_status_info 5 46 aligned based (window_status_info_ptr), 5 47 2 version fixed bin, 5 48 2 status_string bit (36) aligned; /* string (window_status) */ 5 49 /* see window_status.incl.pl1 for the contents of this string */ 5 50 5 51 5 52 declare (window_status_version, window_status_version_1) 5 53 fixed bin internal static init (1) options (constant); 5 54 5 55 /* info structure for the set_more_responses and get_more_responses control 5 56* orders */ 5 57 5 58 5 59 dcl 1 more_responses_info 5 60 aligned based (more_responses_info_ptr), 5 61 2 version fixed bin, 5 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 5 63 2 n_noes fixed bin, 5 64 2 yeses char (32) unaligned, 5 65 2 noes char (32) unaligned; 5 66 5 67 dcl (more_responses_info_version_1, more_responses_version) 5 68 fixed bin internal static init (1) options (constant); 5 69 dcl more_responses_info_ptr 5 70 pointer; 5 71 5 72 /* structure for the set_break_table and get_break_table 5 73* control orders */ 5 74 5 75 declare break_table_ptr pointer; 5 76 declare 1 break_table_info aligned based (break_table_ptr), 5 77 2 version fixed bin, 5 78 2 breaks (0:127) bit (1) unaligned; 5 79 5 80 declare (break_table_info_version, break_table_info_version_1) 5 81 fixed bin init (1) internal static options (constant); 5 82 5 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 5 84 2 version fixed bin, 5 85 2 flags unaligned, 5 86 3 old_handler_valid 5 87 bit(1), 5 88 3 pad bit(35), 5 89 2 more_handler entry (pointer, bit(1) aligned), 5 90 2 old_more_handler entry (pointer, bit(1) aligned); 5 91 5 92 declare more_handler_info_ptr pointer; 5 93 5 94 declare (more_handler_info_version, more_handler_info_version_3) 5 95 fixed bin internal static options (constant) init (3); 5 96 5 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 5 98 2 version char(8), 5 99 2 token_character_count 5 100 fixed bin, 5 101 2 token_characters 5 102 char (128) unaligned; 5 103 5 104 declare token_characters_info_ptr pointer; 5 105 5 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 5 107 5 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 5 109 2 version char(8), 5 110 2 more_prompt char(80); 5 111 5 112 declare more_prompt_info_ptr pointer; 5 113 5 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 5 115 5 116 /* Line editor stuff ... */ 5 117 5 118 dcl line_editor_key_binding_info_ptr 5 119 pointer; 5 120 5 121 dcl line_editor_binding_count 5 122 fixed bin; 5 123 dcl line_editor_longest_sequence 5 124 fixed bin; 5 125 /* For each binding, action defines what to do for that sequence. Constants 5 126* are defined in window_editor_values.incl.pl1. Only if action is set to 5 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 5 128 5 129 dcl 1 line_editor_key_binding_info 5 130 aligned based (line_editor_key_binding_info_ptr), 5 131 2 version char(8), 5 132 2 binding_count fixed bin, 5 133 2 longest_sequence fixed bin, 5 134 2 bindings (line_editor_binding_count refer 5 135 (line_editor_key_binding_info.binding_count)), 5 136 3 sequence char(line_editor_longest_sequence refer 5 137 (line_editor_key_binding_info.longest_sequence)) varying, 5 138 3 action fixed bin, 5 139 3 numarg_action fixed binary, 5 140 3 editor_routine entry (pointer, fixed bin(35)), 5 141 3 name char (64) varying unaligned, 5 142 3 description char (256) varying unaligned, 5 143 3 info_path unaligned, 5 144 4 info_dir char (168), 5 145 4 info_entry char (32); 5 146 5 147 5 148 dcl line_editor_key_binding_info_version_3 5 149 char(8) static options (constant) init ("lekbi003"); 5 150 5 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 5 152 2 version char (8), 5 153 2 flags, 5 154 3 entire_state bit (1) unaligned, 5 155 3 mbz bit (35) unaligned, 5 156 2 key_binding_info_ptr ptr, 5 157 2 entire_state_ptr ptr; 5 158 5 159 dcl get_editor_key_bindings_info_ptr ptr; 5 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 5 161 5 162 dcl 1 set_editor_key_bindings_info aligned 5 163 based (set_editor_key_bindings_info_ptr), 5 164 2 version char (8), 5 165 2 flags, 5 166 3 replace bit (1) unaligned, 5 167 3 update bit (1) unaligned, 5 168 3 mbz bit (34) unaligned, 5 169 2 key_binding_info_ptr ptr; 5 170 5 171 dcl set_editor_key_bindings_info_ptr ptr; 5 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 5 173 5 174 /* This should be moved to window_info.incl.pl1 when that include file is 5 175* created. JR 2/1/84 */ 5 176 5 177 dcl 1 window_edit_line_info 5 178 based (window_edit_line_info_ptr), 5 179 2 version char (8), 5 180 2 line_ptr ptr, 5 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 5 182 5 183 dcl window_edit_line_info_version_1 5 184 char (8) static options (constant) init ("wedl0001"); 5 185 5 186 dcl window_edit_line_info_ptr 5 187 ptr; 5 188 5 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 995 996 6 1 /* Begin include file window_io_attach_data_.incl.pl1 BIM June 1981 */ 6 2 6 3 /* Modified by Chris Jones December 1981 to add MORE_MODE_FOLD */ 6 4 /* Modified by William York 26 January 1982 to add more_handler_in_use 6 5* and more_handler to the attach_data structure. */ 6 6 /* Modified 18 October 1982 by WMY to add the window_image_ptr, 6 7* conversion_tct_table and token_characters. */ 6 8 /* Modified 30 September 1983 by Jon A. Rochlis to add column_origin for 6 9* partial screen width windows. */ 6 10 /* Modified 8 January 1983 by JR to delete attach_data.capabilites. See 6 11* window_io_ and wioctl_ for more info. */ 6 12 /* Modified 5 March 1984 by Barmar to add dispatch_table.name, .description, 6 13* and .info_path. */ 6 14 /* Modified 22 March 1984 by Barmar to add attach_data.auditor_iocb_ptr. */ 6 15 /* Modified 01 September 1984 by JR to add edited mode. */ 6 16 6 17 6 18 /****^ HISTORY COMMENTS: 6 19* 1) change(86-05-18,GDixon), approve(86-05-18,MCR7357), 6 20* audit(86-06-16,Farley), install(86-07-18,MR12.0-1098): 6 21* Modify attach_data.conversion_tct_table to make it aligned. When tct_ was 6 22* replaced by find_char_, the new calling sequence required an aligned 6 23* table. 6 24* END HISTORY COMMENTS */ 6 25 6 26 6 27 /* format: style3 */ 6 28 declare attach_data_ptr pointer; 6 29 declare 1 attach_data aligned based (attach_data_ptr), 6 30 2 window_id bit (36) aligned, 6 31 2 async_count fixed bin, 6 32 2 attach_description 6 33 character (128) var, /* attach description */ 6 34 2 open_description 6 35 character (64) varying, 6 36 2 target_iocb_ptr pointer, 6 37 2 flags, 6 38 3 discard_output 6 39 bit (1) unal, /* more processing: throw away all output */ 6 40 3 debug bit (1) unal, 6 41 3 more_processing 6 42 bit (1) unal, /* more mode */ 6 43 3 vertsp bit (1) unal, /* vertsp mode */ 6 44 3 can bit (1) unal, /* can mode */ 6 45 3 esc bit (1) unal, /* can mode */ 6 46 3 erkl bit (1) unal, /* erkl mode */ 6 47 3 rawo bit (1) unal, /* rawo mode */ 6 48 3 red bit (1) unal, /* red mode */ 6 49 3 ctl_char bit (1) unal, /* allow ctrl chars input? */ 6 50 3 status_pending 6 51 bit (1) unal, 6 52 3 cursor_valid bit (1) unal, 6 53 3 suppress_echo bit (1) unal, 6 54 3 ignore_status bit (1) unal, 6 55 3 edited bit (1) unal, /* edited mode */ 6 56 3 pad bit (21) unal, 6 57 2 status aligned like window_status, 6 58 2 lines_written_since_read 6 59 fixed bin, /* more processing */ 6 60 2 cursor_position, /* Where in this window */ 6 61 3 line fixed bin, /* line number */ 6 62 3 col fixed bin, /* column */ 6 63 3 row_at_rawo fixed bin, 6 64 3 col_at_rawo fixed bin, /* when we went raw */ 6 65 2 more_mode fixed bin, /* which flavor */ 6 66 2 more_prompt character (80), /* "MORE?" */ 6 67 2 more_responses, 6 68 3 n_yeses fixed bin, /* number valid */ 6 69 3 n_noes fixed bin, 6 70 3 more_yeses character (32) unaligned, /* at most 32 yeses */ 6 71 3 more_noes character (32) unaligned, 6 72 2 editing_chars, 6 73 3 erase_char character (1), 6 74 3 kill_char character (1), 6 75 3 input_escape_char 6 76 character (1), /* normally "\" */ 6 77 2 breaks bit (128) unaligned, 6 78 2 line_editor_breaks 6 79 bit (128) unaligned, 6 80 2 current, /* describes us */ 6 81 3 rows fixed bin, /* how many lines */ 6 82 3 columns fixed bin, /* how wide lines in this window are */ 6 83 3 line_origin fixed bin, /* on containing screen (terminal) */ 6 84 3 column_origin fixed bin, /* on containing screen (terminal) */ 6 85 2 kill_ring_info, 6 86 3 top_killer ptr, /* top of ring */ 6 87 3 army ptr, /* surplus killers kept here */ 6 88 2 output_cv_ptr ptr, /* to cv_trans */ 6 89 2 special_ptr ptr, /* to special_chars */ 6 90 2 saved_buffer_ptr /* for saving text across editor calls */ 6 91 pointer, 6 92 2 dispatch_table_ptr /* for editor key bindings */ 6 93 pointer, 6 94 2 more_handler_in_use 6 95 bit(1), 6 96 2 more_handler entry (pointer, bit(1) aligned, fixed bin(35)), 6 97 2 conversion_tct_table 6 98 char(512), 6 99 2 token_character_count /* count of valid chars */ 6 100 fixed bin, 6 101 2 token_characters /* token delimiters for line editor */ 6 102 char(128) unaligned, 6 103 2 window_image_ptr pointer, /* to character array for this window */ 6 104 2 auditor_iocb_ptr pointer; /* set by set_audit_iocb_ptr control order */ 6 105 6 106 dcl ( 6 107 MORE_MODE_SCROLL init (1), 6 108 MORE_MODE_CLEAR init (2), 6 109 MORE_MODE_WRAP init (3), 6 110 MORE_MODE_FOLD init (4) 6 111 ) fixed bin internal static options (constant); 6 112 6 113 dcl attach_data_area area based (get_system_free_area_ ()); 6 114 6 115 declare get_system_free_area_ 6 116 entry returns (pointer); 6 117 6 118 dcl 1 killer based (attach_data.top_killer), 6 119 2 next pointer, /* if you rotate */ 6 120 2 prev pointer, /* dbl thread for conven. */ 6 121 2 max_size fixed bin (21), 6 122 2 words character (killer_alloc_size refer (killer.max_size)) varying; 6 123 6 124 dcl killer_alloc_size fixed bin; 6 125 dcl killer_initial_alloc_size 6 126 fixed bin init (128) internal static options (constant); 6 127 declare breaks_array (0:127) bit (1) unaligned defined (attach_data.breaks) position (1); 6 128 declare line_editor_breaks_array 6 129 (0:127) bit (1) unaligned defined (attach_data.line_editor_breaks) position (1); 6 130 6 131 dcl valid_token_characters char(attach_data.token_character_count) based (addr (attach_data.token_characters)); 6 132 6 133 /* Each window has its own window image, which must be re-allocated if the 6 134* window size changes. */ 6 135 dcl window_image (attach_data.current.rows) char (attach_data.current.columns) 6 136 based (attach_data.window_image_ptr); 6 137 6 138 /* Single based string for clearing. */ 6 139 dcl window_image_string char(attach_data.current.rows * attach_data.current.columns) based (window_image_ptr); 6 140 6 141 /* editor key binding dispatch table. 6 142* 6 143*If type = 0, the keystroke is associated with the editor routine specified by 6 144*routine. Simply call the routine. 6 145* 6 146*If type < 0, the keystroke is a prefix character, and the pointer in next_table 6 147*points to the next dispatch table. 6 148* 6 149*If type > 0, it is an index into the table of builtin editor commands (i.e. 6 150*the editor routines implemented by this module). Perform a quick call of the 6 151*builtin routine. */ 6 152 6 153 dcl dispatch_table_ptr pointer; 6 154 6 155 dcl 1 dispatch_table aligned based (dispatch_table_ptr), 6 156 2 key (0:127), 6 157 3 type fixed bin, 6 158 3 pad fixed bin, 6 159 3 next_table pointer, 6 160 3 routine entry (pointer, fixed bin(35)), 6 161 3 numarg_action fixed bin, /* only for external routines */ 6 162 3 name char (64) varying, 6 163 3 description char (256) varying, 6 164 3 info_path, 6 165 4 info_dir char (168), 6 166 4 info_entry char (32); 6 167 7 1 /* Begin include file window_editor_values.incl.pl1 */ 7 2 7 3 /* Spring 1983 by William M. York */ 7 4 /* Modifed June 1983 by Jon A. Rochlis to add NUMBER_READER_N builtins, word 7 5* casing builtins, twiddle word, and numarg actions */ 7 6 /* Modified 7 August 1983 by JR to add string arrays. Be sure 7 7* everything is kept in sync. If you add a new editor builtin 7 8* make sure you update HIGHEST_BUILTIN_ROUTINE_VALUE, add an element 7 9* to the string array, and bump its dimension. */ 7 10 /* Modified 5 March 1984 by Barmar to add the builtin_descriptions array 7 11* and BUILTIN_INFO_* */ 7 12 7 13 dcl (EXTERNAL_ROUTINE init(0), 7 14 FORWARD_CHARACTER init(1), 7 15 BACKWARD_CHARACTER init(2), 7 16 FORWARD_DELETE_CHARACTER init(3), 7 17 BACKWARD_DELETE_CHARACTER 7 18 init(4), 7 19 MOVE_TO_END_OF_LINE init(5), 7 20 MOVE_TO_BEGINNING_OF_LINE 7 21 init(6), 7 22 KILL_TO_END_OF_LINE init(7), 7 23 KILL_TO_BEGINNING_OF_LINE 7 24 init(8), 7 25 FORWARD_WORD init(9), 7 26 BACKWARD_WORD init(10), 7 27 FORWARD_DELETE_WORD init(11), 7 28 BACKWARD_DELETE_WORD init(12), 7 29 QUOTE_CHARACTER init(13), 7 30 CLEAR_WINDOW init(14), 7 31 TWIDDLE_CHARACTERS init(15), 7 32 DISPLAY_EDITOR_DOCUMENTATION 7 33 init(16), 7 34 SELF_INSERT init(17), 7 35 YANK_FROM_KILL_RING init(18), 7 36 YANK_PREVIOUS_FROM_KILL_RING 7 37 init(19), 7 38 TERMINATE_INPUT_LINE init(20), 7 39 UNDEFINED init(21), 7 40 PROCESS_INPUT_ESCAPE init(22), 7 41 NUMBER_READER_0 init(23), 7 42 NUMBER_READER_1 init(24), 7 43 NUMBER_READER_2 init(25), 7 44 NUMBER_READER_3 init(26), 7 45 NUMBER_READER_4 init(27), 7 46 NUMBER_READER_5 init(28), 7 47 NUMBER_READER_6 init(29), 7 48 NUMBER_READER_7 init(30), 7 49 NUMBER_READER_8 init(31), 7 50 NUMBER_READER_9 init(32), 7 51 MULTIPLIER init(33), 7 52 LOWERCASE_WORD init(34), 7 53 UPPERCASE_WORD init(35), 7 54 INITIAL_CAPITAL init(36), 7 55 TWIDDLE_WORDS init(37), 7 56 NEGATIVE_NUMBER_READER init(38), 7 57 /* the following must be updated as new internal routines are added 7 58* in order for set_editor_key_bindings to work */ 7 59 HIGHEST_BUILTIN_ROUTINE_VALUE 7 60 init(38) 7 61 ) fixed bin static options(constant); 7 62 7 63 dcl builtin_routine_names (-1:38) char(32) static options (constant) init 7 64 ("PREFIX_KEY", 7 65 "USER_DEFINED_COMMAND", 7 66 "FORWARD_CHARACTER", 7 67 "BACKWARD_CHARACTER", 7 68 "FORWARD_DELETE_CHARACTER", 7 69 "BACKWARD_DELETE_CHARACTER", 7 70 "MOVE_TO_END_OF_LINE", 7 71 "MOVE_TO_BEGINNING_OF_LINE", 7 72 "KILL_TO_END_OF_LINE", 7 73 "KILL_TO_BEGINNING_OF_LINE", 7 74 "FORWARD_WORD", 7 75 "BACKWARD_WORD", 7 76 "FORWARD_DELETE_WORD", 7 77 "BACKWARD_DELETE_WORD", 7 78 "QUOTE_CHARACTER", 7 79 "CLEAR_WINDOW", 7 80 "TWIDDLE_CHARACTERS", 7 81 "DISPLAY_EDITOR_DOCUMENTATION", 7 82 "SELF_INSERT", 7 83 "YANK_FROM_KILL_RING", 7 84 "YANK_PREVIOUS_FROM_KILL_RING", 7 85 "TERMINATE_INPUT_LINE", 7 86 "UNDEFINED", 7 87 "PROCESS_INPUT_ESCAPE", 7 88 "NUMBER_READER_0", 7 89 "NUMBER_READER_1", 7 90 "NUMBER_READER_2", 7 91 "NUMBER_READER_3", 7 92 "NUMBER_READER_4", 7 93 "NUMBER_READER_5", 7 94 "NUMBER_READER_6", 7 95 "NUMBER_READER_7", 7 96 "NUMBER_READER_8", 7 97 "NUMBER_READER_9", 7 98 "MULTIPLIER", 7 99 "LOWERCASE_WORD", 7 100 "UPPERCASE_WORD", 7 101 "INITIAL_CAPITAL", 7 102 "TWIDDLE_WORDS", 7 103 "NEGATIVE_NUMBER_READER"); 7 104 7 105 dcl builtin_descriptions (-1:38) char (128) varying static options (constant) init 7 106 ("Reads another key and dispatches.", 7 107 "A user-defined command for which no description was supplied.", 7 108 "Moves forward over one character.", 7 109 "Moves backward over one character.", 7 110 "Deletes the character at the cursor.", 7 111 "Deletes the character to the left of the cursor.", 7 112 "Moves to the end of the input line.", 7 113 "Moves to the beginning of the input line.", 7 114 "Deletes the text from the cursor to the end of the input line, saving it on the kill ring.", 7 115 "Deletes the text from the cursor to the beginning of the input line, saving it on the kill ring.", 7 116 "Moves to the end of the current or following word.", 7 117 "Moves to the beginning of the current or preceding word.", 7 118 "Deletes the text from the cursor to the end of the current word, saving it on the kill ring.", 7 119 "Deletes the text from the cursor to the beginning of the current word, saving it on the kill ring.", 7 120 "Inserts the next character typed into the input line.", 7 121 "Clears the input window, and redisplays the current input line at the top of the window.", 7 122 "Interchanges the two characters to the left of the cursor.", 7 123 "Displays the list of standard input editor commands.", 7 124 "Inserts the character typed.", 7 125 "Inserts the top item from the kill ring.", 7 126 "Deletes the text just yanked, rotate the kill ring, and insert the new top item.", 7 127 "Enters the input line.", 7 128 "Undefined key - rings the terminal bell.", 7 129 "Does appropriate ""backslash-style"" input escape processing.", 7 130 (10) ("Begins reading a numeric argument."), 7 131 "If followed by digits, uses them as the numeric argument, otherwise multiplies the num-arg by four.", 7 132 "Lowercases the current word.", 7 133 "Uppercases the current word.", 7 134 "Uppercases the first letter of the current word, and lowercases the rest of the letters.", 7 135 "Interchange the current word and the preceding word.", 7 136 "Begins reading a negative numeric argument."); 7 137 7 138 dcl BUILTIN_INFO_DIR char (168) static options (constant) init (">doc>info"); 7 139 dcl BUILTIN_INFO_ENTRY char (32) static options (constant) init ("video_editing.gi"); 7 140 7 141 /* numeric argument action */ 7 142 7 143 dcl (REJECT init(0), 7 144 IGNORE init(1), 7 145 REPEAT init(2), 7 146 PASS init(3), 7 147 /* this should be updated if new numarg actions are added */ 7 148 HIGHEST_NUMARG_ACTION_VALUE 7 149 init(3) 7 150 ) fixed bin static options(constant); 7 151 7 152 /* strings for numarg actions */ 7 153 7 154 dcl numarg_action_names (0:3) char(6) static options (constant) init 7 155 ("REJECT", 7 156 "INGORE", 7 157 "REPEAT", 7 158 "PASS"); 7 159 7 160 /* end include file window_editor_values.incl.pl1 */ 6 168 8 1 /* begin include file window_status.incl.pl1 */ 8 2 /* Modified 28 March 1984 by Jon A. Rochlis to add terminal type change 8 3* and reconnection stuff. */ 8 4 /* format: style3 */ 8 5 /* interrupts that an application can recieve from a window */ 8 6 8 7 declare window_status_string 8 8 bit (36) unaligned; 8 9 8 10 declare 1 window_status aligned, 8 11 2 screen_invalid bit (1) unaligned, 8 12 2 async_change bit (1) unaligned, 8 13 2 ttp_change bit (1) unaligned, 8 14 2 reconnection bit (1) unaligned, 8 15 2 pad bit (32) unaligned; 8 16 8 17 declare ( 8 18 W_STATUS_SCREEN_INVALID 8 19 init ("1"b), 8 20 W_STATUS_ASYNC_EVENT 8 21 init ("01"b), 8 22 W_STATUS_TTP_CHANGE 8 23 init ("001"b), 8 24 W_STATUS_RECONNECTION 8 25 init ("0001"b) 8 26 ) bit (36) aligned internal static options (constant); 8 27 8 28 /* end include file window_status.incl.pl1 */ 6 169 9 1 /* BEGIN INCLUDE FILE terminal_capabilities.incl.pl1 BIM May 1981 */ 9 2 /* format: style3 */ 9 3 dcl 1 capabilities_info aligned based (capabilities_info_ptr), 9 4 2 version fixed bin, 9 5 2 screensize, 9 6 3 columns fixed bin, 9 7 3 rows fixed bin, 9 8 2 flags, 9 9 3 scroll_region bit (1) unal, 9 10 3 insert_chars bit (1) unal, 9 11 3 insert_mode bit (1) unal, 9 12 3 delete_chars bit (1) unal, 9 13 3 overprint bit (1) unal, 9 14 3 pad bit (31) unal, 9 15 2 line_speed fixed bin; /* chars per sec */ 9 16 9 17 dcl (capabilities_info_version_1, capabilities_info_version) 9 18 fixed bin internal static init (1) options (constant); 9 19 dcl capabilities_info_ptr 9 20 pointer; 9 21 9 22 /* END INCLUDE FILE terminal_capabilities.incl.pl1 */ 6 170 6 171 6 172 /* End include file window_io_attach_data_.incl.pl1 */ 997 998 10 1 /* BEGIN INCLUDE FILE tc_operations_.incl.pl1 BIM May 1981 */ 10 2 10 3 /* Modified 7 February 1985 by Jon Rochlis to add saved_ips_mask to 10 4* request_header. */ 10 5 10 6 /* format: style3 */ 10 7 10 8 /* These are the operations that the "virtual video terminal" is expected to 10 9*provide. These are the primitive operation. For example, the various 10 10*flavors of region clearing are collapsed into "clear region". The particular 10 11*operations of clear screen, clear to end of screen, and clear to end of line 10 12*are special cases which will be used when terminal functionality permits. Of 10 13*course, at the user interface level, these are provided as convienience. 10 14*This introduces the innefficiency of mapping CLEOL -> CL-REGION -> CLEOL. 10 15*However, CLEOL _i_n _a _w_i_n_d_o_w does not always mean CLEOL on the screen. It will 10 16*not unless the window is full width, or happens to be rightmost. Similiarly, 10 17*a user call of CLEAR_WINDOW is just a region to the terminal. */ 10 18 10 19 declare request_ptr pointer; 10 20 declare REQUEST_SENTINEL character (4) aligned init ("RqqS") internal static options (constant); 10 21 10 22 declare 1 request_header aligned based (request_ptr), 10 23 2 sentinel character (4) aligned, 10 24 2 request_id fixed bin (71), /* Clock Value */ 10 25 2 window_id bit (36) aligned, 10 26 2 coords aligned like r_coords, 10 27 2 operation fixed bin, 10 28 2 flags aligned, 10 29 3 async_interruption 10 30 bit (1) unaligned, /* Output */ 10 31 3 this_window bit (1) unaligned, /* ditto */ 10 32 2 saved_ips_mask bit (36) aligned; /* so tc_block can restore mask from window_io_ */ 10 33 10 34 declare 1 r_coords aligned based, 10 35 2 row fixed bin, 10 36 2 col fixed bin; 10 37 10 38 declare OP_ERROR fixed bin initial (0) internal static options (constant); 10 39 declare OP_POSITION_CURSOR fixed bin initial (1) internal static options (constant); 10 40 10 41 declare OP_CLEAR_REGION fixed bin initial (2) internal static options (constant); 10 42 10 43 /* This next one is for the TC operation of clearing terminal without 10 44* any assumptions, used when the user indicates screen damage, or on 10 45* reconnection. */ 10 46 10 47 declare OP_CLEAR_SCREEN_NO_OPT 10 48 fixed bin init (4) internal static options (constant); 10 49 10 50 declare 1 request_clear_region 10 51 aligned based (request_ptr), 10 52 2 header aligned like request_header, 10 53 2 by_name aligned, 10 54 3 extent aligned, 10 55 4 rows fixed bin, 10 56 4 columns fixed bin; 10 57 10 58 declare OP_INSERT_TEXT fixed bin initial (3) internal static options (constant); 10 59 10 60 declare 1 request_text aligned based (request_ptr), 10 61 2 header aligned like request_header, 10 62 2 by_name aligned, 10 63 3 text_ptr pointer, 10 64 3 text_length fixed bin (21); 10 65 10 66 declare request_text_string character (request_text.text_length) based (request_text.text_ptr); 10 67 10 68 declare OP_DELETE_CHARS fixed bin initial (6) internal static options (constant); 10 69 10 70 declare 1 request_delete_chars 10 71 aligned based (request_ptr), 10 72 2 header aligned like request_header, 10 73 2 by_name aligned, 10 74 3 count fixed bin; 10 75 10 76 declare OP_SCROLL_REGION fixed bin initial (7) internal static options (constant); 10 77 10 78 declare 1 request_scroll_region 10 79 aligned based (request_ptr), 10 80 2 header aligned like request_header, 10 81 2 by_name aligned, 10 82 3 start_line fixed bin, 10 83 3 n_lines fixed bin, 10 84 3 distance fixed bin; 10 85 10 86 declare OP_BELL fixed bin initial (8) internal static options (constant); 10 87 declare OP_GET_CHARS_ECHO fixed bin initial (9) internal static options (constant); 10 88 declare OP_GET_CHARS_NO_ECHO 10 89 fixed bin initial (10) internal static options (constant); 10 90 declare OP_WRITE_SYNC_GET_CHARS_NO_ECHO 10 91 fixed bin initial (11) internal static options (constant); 10 92 10 93 declare 1 request_read_status 10 94 aligned based (request_ptr), 10 95 2 header aligned like request_header, 10 96 2 by_name aligned, /* not used as such */ 10 97 3 returned_length 10 98 fixed bin, 10 99 3 event_channel fixed bin (71); 10 100 10 101 declare 1 request_read aligned based (request_ptr), 10 102 2 header aligned like request_header, 10 103 2 by_name aligned, 10 104 3 buffer_ptr pointer, 10 105 3 buffer_length fixed bin (21), 10 106 3 returned_length 10 107 fixed bin (21), 10 108 3 returned_break_flag 10 109 bit (1) aligned, 10 110 3 prompt_ptr pointer, 10 111 3 prompt_length fixed bin (21), 10 112 3 breaks bit (128) unaligned; 10 113 10 114 10 115 declare request_prompt character (request_read.prompt_length) based (request_read.prompt_ptr); 10 116 declare request_buffer character (request_read.buffer_length) based (request_read.buffer_ptr); 10 117 10 118 declare OP_GET_CURSOR_POSITION 10 119 fixed bin initial (12) internal static options (constant); 10 120 declare OP_READ_STATUS fixed bin initial (13) internal static options (constant); 10 121 declare OP_OVERWRITE_TEXT fixed bin initial (14) internal static options (constant); 10 122 declare OP_WRITE_RAW fixed bin initial (15) internal static options (constant); 10 123 declare OP_READ_ONE fixed bin initial (16) internal static options (constant); 10 124 10 125 /* use request_read, and return the character in the buffer there */ 10 126 /* pass the BLOCK flag in in break_flag. Well... */ 10 127 10 128 /* END INCLUDE FILE tc_operations_.incl.pl1 */ 999 1000 1001 end window_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/13/87 1323.5 window_.pl1 >special_ldd>install>MR12.1-1086>window_.pl1 987 1 09/12/84 0916.7 tc_desk_info_.incl.pl1 >ldd>include>tc_desk_info_.incl.pl1 989 2 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 991 3 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 993 4 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 995 5 09/12/84 0916.7 window_control_info.incl.pl1 >ldd>include>window_control_info.incl.pl1 997 6 07/24/86 2051.7 window_io_attach_data_.incl.pl1 >ldd>include>window_io_attach_data_.incl.pl1 6-168 7 09/12/84 0916.7 window_editor_values.incl.pl1 >ldd>include>window_editor_values.incl.pl1 6-169 8 09/12/84 0916.7 window_status.incl.pl1 >ldd>include>window_status.incl.pl1 6-170 9 03/27/82 0429.7 terminal_capabilities.incl.pl1 >ldd>include>terminal_capabilities.incl.pl1 999 10 03/12/85 0930.8 tc_operations_.incl.pl1 >ldd>include>tc_operations_.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. Block_flag parameter bit(1) dcl 480 ref 474 474 490 511 Break parameter varying char(1) dcl 121 set ref 374 383 391* 470* 517 Buffer_len parameter fixed bin(21,0) dcl 552 set ref 546 559* Buffer_ptr parameter pointer dcl 551 set ref 546 559* Code parameter fixed bin(35,0) dcl 121 set ref 140 152 160 170 178 188 200 212 257 268 278 288 297 310 314 320* 335 343 354 362 374 383 425* 474 474 506* 517 529 546 559* 563 652 652 662* 665* 671* 691* 692 696* 697 727 727 731* 732 747* 822* 859* 860 871* 872 878* 907* 923* 927* 928 928* 931 969* 982* Col parameter fixed bin(17,0) dcl 121 set ref 140 146 160 167 170 175 268 272* 280 354 359* Count parameter fixed bin(17,0) dcl 121 ref 343 350 Distance parameter fixed bin(17,0) dcl 121 ref 563 574 Iocb_ptr parameter pointer dcl 121 set ref 140 160 170 178 188 212 257 268 288 297 314 343 354 362 374 383 474 474 517 529 546 563 927* Line parameter fixed bin(17,0) dcl 121 set ref 140 145 160 166 178 183 268 272* 281 354 358* 563 575 N_cols parameter fixed bin(17,0) dcl 121 ref 268 274 N_lines parameter fixed bin(17,0) dcl 121 ref 268 273 563 573 N_read parameter fixed bin(21,0) dcl 553 set ref 546 559* N_to_get parameter fixed bin(21,0) dcl 121 ref 374 383 394 517 OP_BELL 000060 constant fixed bin(17,0) initial dcl 10-86 set ref 367* OP_CLEAR_REGION 000067 constant fixed bin(17,0) initial dcl 10-41 set ref 194* 222* 262* 272* OP_DELETE_CHARS 000056 constant fixed bin(17,0) initial dcl 10-68 set ref 349* OP_GET_CHARS_ECHO 000073 constant fixed bin(17,0) initial dcl 10-87 set ref 388* 435 458 826 OP_GET_CHARS_NO_ECHO 000045 constant fixed bin(17,0) initial dcl 10-88 set ref 378* 440 533* 826 OP_GET_CURSOR_POSITION constant fixed bin(17,0) initial dcl 10-118 set ref 955* OP_INSERT_TEXT 000061 constant fixed bin(17,0) initial dcl 10-58 set ref 294* OP_OVERWRITE_TEXT 000034 constant fixed bin(17,0) initial dcl 10-121 set ref 303* OP_POSITION_CURSOR 000071 constant fixed bin(17,0) initial dcl 10-39 set ref 149* 252* OP_READ_ONE 000033 constant fixed bin(17,0) initial dcl 10-123 set ref 485* 826 OP_SCROLL_REGION constant fixed bin(17,0) initial dcl 10-76 set ref 570* OP_WRITE_RAW 000044 constant fixed bin(17,0) initial dcl 10-122 set ref 325* 820 OP_WRITE_SYNC_GET_CHARS_NO_ECHO 000035 constant fixed bin(17,0) initial dcl 10-90 set ref 438 464 522* 826 One parameter varying char(1) dcl 478 set ref 474 474 511* 513* Prompt parameter char unaligned dcl 121 set ref 517 524 525 REQUEST_SENTINEL 000036 constant char(4) initial dcl 10-20 ref 830 Stream_input_output 000061 constant fixed bin(17,0) initial dcl 3-15 set ref 696* Terminal_iocb_ptr parameter pointer dcl 655 ref 652 652 660 663 772 772 777 Text parameter char unaligned dcl 121 set ref 288 297 305* 307 308 314 331 332 374 383 393 517 Text_got parameter fixed bin(21,0) dcl 121 set ref 374 383 397* 406* 406 425 469* 469 517 WINDOW_LIST_VALUE_NAME_SUFFIX 000030 constant char(12) initial unaligned dcl 607 ref 619 639 W_STATUS_SCREEN_INVALID constant bit(36) initial dcl 8-17 ref 317 Window_edit_line_info_ptr parameter pointer dcl 549 set ref 546 559* Window_info_ptr parameter pointer dcl 658 ref 652 652 661 Window_iocb_ptr parameter pointer dcl 657 set ref 652 652 663 691* 696* 699* 721* 727 727 731* 738* 750* 752* addcharno builtin function dcl 137 ref 431 addr builtin function dcl 137 ref 149 149 150 150 194 194 199 199 222 222 229 229 237 237 245 245 252 252 253 253 262 262 265 265 272 272 276 276 294 294 303 303 307 309 309 325 325 331 333 333 349 349 351 351 367 367 368 368 378 378 388 388 393 404 404 485 485 487 493 493 522 522 524 533 533 535 535 570 570 576 576 869 869 871 871 955 955 957 957 async_change 67(01) based bit(1) level 3 packed unaligned dcl 6-29 set ref 418* 504* 967* async_count 1 based fixed bin(17,0) level 2 dcl 6-29 set ref 813* 813 890* 890 async_interruption 10 000200 automatic bit(1) level 4 in structure "rqg" packed unaligned dcl 371 in procedure "window_" set ref 414 501 async_interruption 10 based bit(1) level 3 in structure "request_header" packed unaligned dcl 10-22 in procedure "window_" set ref 882 atd 000342 automatic char(128) unaligned dcl 676 set ref 678* 681* 681 684* 684 688* 688 691* attach_data based structure level 1 dcl 6-29 attach_data_ptr 000262 automatic pointer dcl 6-28 in procedure "window_" set ref 154 155 156 166 167 174 182 196 197 202 202 203 208 217 217 222 222 225 228 228 230 232 234 234 243 244 244 249 252 252 262 262 264 264 280 281 282 294 294 303 303 310 310 317 317 317 325 325 326 328 337 338 339 349 349 358 359 367 367 378 378 388 388 395 402 402 418 419 435 435 441 460 460 461 461 464 485 485 504 505 522 522 533 533 575 813 813 820 820 831 834 835 844 863 864 865 866 867 874 875 876 890 890 905 934* 958 958 958 962 963 966 967 attach_data_ptr 16 based pointer level 2 in structure "iocb" dcl 4-6 in procedure "window_" ref 934 auto_desk_info 000106 automatic structure level 1 dcl 862 set ref 869 869 871 871 breaks 23 000200 automatic bit(128) level 3 in structure "rqg" packed unaligned dcl 371 in procedure "window_" set ref 395* breaks 147 based bit(128) level 2 in structure "attach_data" packed unaligned dcl 6-29 in procedure "window_" ref 395 buffer_length 14 000200 automatic fixed bin(21,0) level 3 dcl 371 set ref 394* 432* 432 450 470 488* 534* buffer_ptr 12 000200 automatic pointer level 3 dcl 371 set ref 393* 431* 431 470 487* by_name 12 000200 automatic structure level 2 in structure "rqg" dcl 371 in procedure "window_" by_name 12 000146 automatic structure level 2 in structure "rqt" dcl 286 in procedure "window_" by_name 12 000230 automatic structure level 2 in structure "rsr" dcl 566 in procedure "window_" by_name 12 000132 automatic structure level 2 in structure "rqr" dcl 186 in procedure "window_" by_name 12 000164 automatic structure level 2 in structure "rqd" dcl 346 in procedure "window_" c parameter fixed bin(17,0) dcl 809 ref 806 835 character builtin function dcl 137 ref 678 681 684 688 cleanup 000122 stack reference condition dcl 106 ref 147 193 221 261 271 293 302 324 348 366 377 387 484 521 532 569 853 948 953 clock builtin function dcl 137 ref 832 code 000253 automatic fixed bin(35,0) dcl 590 set ref 621* col 6 based fixed bin(17,0) level 3 in structure "request_header" dcl 10-22 in procedure "window_" set ref 835* col 6 000100 automatic fixed bin(17,0) level 3 in structure "simple_r" dcl 99 in procedure "window_" set ref 963 col 72 based fixed bin(17,0) level 3 in structure "attach_data" dcl 6-29 in procedure "window_" set ref 155* 167 182 202* 217 222* 225 228 249 252* 262* 264 280* 294* 303* 310* 310 325* 349* 359 367* 378* 388* 402 435* 435 441* 460* 460 461* 461 464* 485* 522* 533* 963* col 6 000146 automatic fixed bin(17,0) level 4 in structure "rqt" dcl 286 in procedure "window_" set ref 329* col 6 000132 automatic fixed bin(17,0) level 4 in structure "rqr" dcl 186 in procedure "window_" set ref 236* col 000131 automatic fixed bin(17,0) dcl 142 in procedure "window_" set ref 146* 149* 155 167* 175* 182* col 6 000200 automatic fixed bin(17,0) level 4 in structure "rqg" dcl 371 in procedure "window_" set ref 402* 441 464 column 1 based fixed bin(17,0) level 3 dcl 5-25 ref 684 684 column_origin 162 based fixed bin(17,0) level 3 dcl 6-29 ref 402 835 866 columns 160 based fixed bin(17,0) level 3 in structure "attach_data" dcl 6-29 in procedure "window_" ref 197 228 232 243 264 867 columns 13 000132 automatic fixed bin(17,0) level 4 in structure "rqr" dcl 186 in procedure "window_" set ref 197* 228* 232* 243* 264* 274* coords 5 000100 automatic structure level 2 in structure "simple_r" dcl 99 in procedure "window_" coords 5 000146 automatic structure level 3 in structure "rqt" dcl 286 in procedure "window_" coords 5 000132 automatic structure level 3 in structure "rqr" dcl 186 in procedure "window_" coords 5 000200 automatic structure level 3 in structure "rqg" dcl 371 in procedure "window_" coords 5 based structure level 2 in structure "request_header" dcl 10-22 in procedure "window_" count 12 000164 automatic fixed bin(17,0) level 3 dcl 346 set ref 350* current 157 based structure level 2 dcl 6-29 currentsize builtin function dcl 137 ref 641 cursor_position 71 based structure level 2 dcl 6-29 cursor_valid 66(11) based bit(1) level 3 packed unaligned dcl 6-29 set ref 156* 203* 282* 326 337* 905 distance 14 000230 automatic fixed bin(17,0) level 3 dcl 566 set ref 574* error_table_$null_info_ptr 000032 external static fixed bin(35,0) dcl 595 ref 665 error_table_$undefined_order_request 000056 external static fixed bin(35,0) dcl 918 ref 928 error_table_$unimplemented_version 000034 external static fixed bin(35,0) dcl 595 ref 671 extent 12 000132 automatic structure level 3 in structure "rqr" dcl 186 in procedure "window_" extent 3 based structure level 2 in structure "window_position_info" unaligned dcl 5-25 in procedure "window_" first_column 2 000106 automatic fixed bin(17,0) level 2 dcl 862 set ref 866* first_row 000106 automatic fixed bin(17,0) level 2 dcl 862 set ref 864* flags 10 based structure level 2 in structure "request_header" dcl 10-22 in procedure "window_" set ref 836* flags 10 000200 automatic structure level 3 in structure "rqg" dcl 371 in procedure "window_" flags 66 based structure level 2 in structure "attach_data" dcl 6-29 in procedure "window_" get_system_free_area_ 000054 constant entry external dcl 6-115 ref 621 621 hcs_$reset_ips_mask 000012 constant entry external dcl 108 ref 891 hcs_$set_ips_mask 000010 constant entry external dcl 108 ref 814 header 000200 automatic structure level 2 in structure "rqg" dcl 371 in procedure "window_" header 000146 automatic structure level 2 in structure "rqt" dcl 286 in procedure "window_" header 000132 automatic structure level 2 in structure "rqr" dcl 186 in procedure "window_" height 4 based fixed bin(17,0) level 3 dcl 5-25 ref 681 681 i 000251 automatic fixed bin(17,0) dcl 589 set ref 714* 715 715* 719* 721 737* 738 740 740* 761* 762 762* 781* 782* ignore_status 66(13) based bit(1) level 3 packed unaligned dcl 6-29 ref 317 820 iocb based structure level 1 dcl 4-6 iocb_name parameter char unaligned dcl 799 set ref 796 801* iocb_ptr 000426 automatic pointer dcl 798 in procedure "find_iocb" set ref 801* 802 iocb_ptr parameter pointer dcl 792 in procedure "iocb_name" ref 790 793 iocb_ptr 000256 automatic pointer dcl 775 in procedure "window_" set ref 782* 783* 784* iox_$attach_ptr 000040 constant entry external dcl 2-8 ref 691 iox_$close 000042 constant entry external dcl 2-8 ref 750 783 iox_$control 000044 constant entry external dcl 2-8 ref 731 859 869 871 877 927 iox_$detach_iocb 000046 constant entry external dcl 2-8 ref 699 752 784 iox_$find_iocb 000050 constant entry external dcl 2-8 ref 801 iox_$open 000052 constant entry external dcl 2-8 ref 696 j 000252 automatic fixed bin(17,0) dcl 589 set ref 740* 742 742* l parameter fixed bin(17,0) dcl 809 ref 806 834 length builtin function dcl 137 ref 308 332 525 line 2 based fixed bin(17,0) level 3 in structure "window_position_info" dcl 5-25 in procedure "window_" ref 678 line 000130 automatic fixed bin(17,0) dcl 142 in procedure "window_" set ref 145* 149* 154 166* 174* 183* line 71 based fixed bin(17,0) level 3 in structure "attach_data" dcl 6-29 in procedure "window_" set ref 154* 166 174 202* 217 222* 234 244 252* 262* 281* 294* 303* 325* 349* 358 367* 378* 388* 485* 522* 533* 962* line_origin 161 based fixed bin(17,0) level 3 dcl 6-29 ref 328 575 834 864 958 958 lines_written_since_read 70 based fixed bin(17,0) level 2 dcl 6-29 set ref 208* ltrim builtin function dcl 137 ref 678 681 684 688 max builtin function dcl 137 ref 890 n_columns 3 000106 automatic fixed bin(17,0) level 2 dcl 862 set ref 867* n_lines 13 000230 automatic fixed bin(17,0) level 3 dcl 566 set ref 573* n_rows 1 000106 automatic fixed bin(17,0) level 2 dcl 862 set ref 865* n_windows 1 based fixed bin(17,0) level 2 dcl 583 set ref 629* 631* 641 646 709 710* 714 717 737 740 740 756 757 760* 764 781 786 name 1 based char(32) level 2 dcl 4-6 ref 793 new_window_list_ptr 000402 automatic pointer dcl 705 in begin block on line 704 set ref 710* 711 715 720 new_window_list_ptr 000406 automatic pointer dcl 755 in begin block on line 754 set ref 760* 762 765 no_create 000340 automatic bit(1) dcl 605 set ref 610* 615* 626 null builtin function dcl 137 ref 380 389 617 621 621 624 641 644 644 644 644 644 644 646 663 663 663 691 691 707 712 779 877 877 924 928 one_char 000227 automatic char(1) unaligned dcl 479 set ref 487 513 op parameter fixed bin(17,0) dcl 809 ref 806 820 826 826 826 826 833 operation 7 based fixed bin(17,0) level 2 in structure "request_header" dcl 10-22 in procedure "window_" set ref 833* operation 7 000200 automatic fixed bin(17,0) level 3 in structure "rqg" dcl 371 in procedure "window_" set ref 435 438 440* 458 464 origin 1 based structure level 2 unaligned dcl 5-25 printable 000000 constant char(96) initial unaligned dcl 975 ref 980 prompt_length 22 000200 automatic fixed bin(21,0) level 3 dcl 371 set ref 441 464 525* prompt_ptr 20 000200 automatic pointer level 3 dcl 371 set ref 380* 389* 524* r_coords based structure level 1 dcl 10-34 r_header_ptr parameter pointer dcl 808 ref 806 811 real_window_iocb_ptr 000112 automatic pointer dcl 101 set ref 559* 868 924* 927* 928 934 request_clear_region based structure level 1 dcl 10-50 request_delete_chars based structure level 1 dcl 10-70 request_header based structure level 1 dcl 10-22 request_id 2 based fixed bin(71,0) level 2 dcl 10-22 set ref 832* request_ptr 000266 automatic pointer dcl 10-19 in procedure "window_" set ref 811* 815 830 831 832 833 834 835 836 855 855 request_ptr parameter pointer dcl 842 in procedure "do_request" set ref 840 859* 882 882 request_read based structure level 1 dcl 10-101 request_scroll_region based structure level 1 dcl 10-78 request_text based structure level 1 dcl 10-60 returned_break_flag 16 000200 automatic bit(1) level 3 dcl 371 set ref 399* 461 467 490* 511 returned_length 15 000200 automatic fixed bin(21,0) level 3 dcl 371 set ref 401* 406 431 432 435 450 460 461 467 470 row 5 000100 automatic fixed bin(17,0) level 3 in structure "simple_r" dcl 99 in procedure "window_" set ref 958 958 962 row 5 000146 automatic fixed bin(17,0) level 4 in structure "rqt" dcl 286 in procedure "window_" set ref 328* row 5 000132 automatic fixed bin(17,0) level 4 in structure "rqr" dcl 186 in procedure "window_" set ref 230 233* 233 row 5 based fixed bin(17,0) level 3 in structure "request_header" dcl 10-22 in procedure "window_" set ref 834* rows 12 000132 automatic fixed bin(17,0) level 4 in structure "rqr" dcl 186 in procedure "window_" set ref 196* 227* 234* 237 244* 245 263* 273* rows 157 based fixed bin(17,0) level 3 in structure "attach_data" dcl 6-29 in procedure "window_" ref 196 230 234 244 865 958 rqd 000164 automatic structure level 1 dcl 346 set ref 349 349 351 351 rqg 000200 automatic structure level 1 dcl 371 set ref 378 378 388 388 404 404 485 485 493 493 522 522 533 533 535 535 rqg_text based char unaligned dcl 372 ref 470 rqr 000132 automatic structure level 1 dcl 186 set ref 194 194 199 199 222 222 229 229 237 237 245 245 262 262 265 265 272 272 276 276 rqt 000146 automatic structure level 1 dcl 286 set ref 294 294 303 303 309 309 325 325 333 333 rsr 000230 automatic structure level 1 dcl 566 set ref 570 570 576 576 rtrim builtin function dcl 137 ref 619 639 678 681 681 684 684 688 688 saved_ips_mask 11 based bit(36) level 2 in structure "request_header" dcl 10-22 in procedure "window_" set ref 815* 855 855 saved_ips_mask 000121 automatic bit(36) dcl 105 in procedure "window_" set ref 814* 815 855 855* 891 891* 894* 925* screen_invalid 67 based bit(1) level 3 packed unaligned dcl 6-29 set ref 338* 876* sentinel based char(4) level 2 in structure "window_list" dcl 583 in procedure "window_" set ref 630* 711* sentinel based char(4) level 2 in structure "request_header" dcl 10-22 in procedure "window_" set ref 830* simple_r 000100 automatic structure level 1 dcl 99 set ref 149 149 150 150 252 252 253 253 367 367 368 368 955 955 957 957 size_of_window_list 000341 automatic fixed bin(18,0) dcl 637 set ref 641* 643* 644* start_line 12 000230 automatic fixed bin(17,0) level 3 dcl 566 set ref 575* status 67 based structure level 2 dcl 6-29 set ref 317 status_pending 66(10) based bit(1) level 3 packed unaligned dcl 6-29 set ref 317 339* 419* 505* 820 875* 966* string builtin function dcl 137 set ref 836* substr builtin function dcl 137 ref 470 target_iocb_ptr 64 based pointer level 2 dcl 6-29 ref 844 target_iocbp 000114 automatic pointer dcl 102 set ref 844* 859* 869* 871* 877* tc_desk_window_info based structure level 1 dcl 1-14 terminal_iocb_ptr 000254 automatic pointer dcl 656 set ref 660* 678* 703* 703* 723* 723* 731* 735* 735* 769* 769* 777* 778* 778* 787* 787* terminal_name parameter char unaligned dcl 603 ref 601 613 619 635 639 text parameter char unaligned dcl 974 ref 972 980 text_length 14 000146 automatic fixed bin(21,0) level 3 dcl 286 set ref 308* 310 332* text_ptr 12 000146 automatic pointer level 3 dcl 286 set ref 307* 331* this_is_an_input_request 000120 automatic bit(1) dcl 104 set ref 826* 882 this_request_ptr 000116 automatic pointer dcl 103 set ref 811* this_window 10(01) 000200 automatic bit(1) level 4 in structure "rqg" packed unaligned dcl 371 in procedure "window_" set ref 416 501 this_window 10(01) based bit(1) level 3 in structure "request_header" packed unaligned dcl 10-22 in procedure "window_" set ref 882 unspec builtin function dcl 137 ref 317 317 value_$get_data 000026 constant entry external dcl 591 ref 621 value_$set_data 000030 constant entry external dcl 593 ref 644 value_name 000324 automatic char(45) unaligned dcl 604 set ref 619* 621* 639* 644* verify builtin function dcl 137 ref 980 version based fixed bin(17,0) level 2 dcl 5-25 ref 669 video_et_$bad_window_id 000016 external static fixed bin(35,0) dcl 114 ref 860 video_et_$cursor_position_undefined 000020 external static fixed bin(35,0) dcl 114 ref 907 video_et_$string_not_printable 000022 external static fixed bin(35,0) dcl 114 ref 982 video_et_$switch_not_window 000036 external static fixed bin(35,0) dcl 599 ref 747 video_et_$window_status_pending 000014 external static fixed bin(35,0) dcl 114 ref 320 425 506 822 878 969 video_et_$wsys_not_invoked 000060 external static fixed bin(35,0) dcl 920 ref 928 width 3 based fixed bin(17,0) level 3 dcl 5-25 ref 688 688 window_id 4 based bit(36) level 2 in structure "request_header" dcl 10-22 in procedure "window_" set ref 831* window_id based bit(36) level 2 in structure "attach_data" dcl 6-29 in procedure "window_" set ref 831 863 874* window_id 4 000106 automatic bit(36) level 2 in structure "auto_desk_info" dcl 862 in begin block on line 860 set ref 863* 874 window_io_iox_$edit_line 000024 constant entry external dcl 555 ref 559 window_iocb_ptr 6 000106 automatic pointer level 2 dcl 862 set ref 868* window_list based structure level 1 dcl 583 set ref 629 641 646 710 717 757 760 764 786 window_list_ptr 000246 automatic pointer dcl 582 set ref 617* 621* 624 629* 630 631 641 641 644* 646 646 707 709 712 714 715 717 720* 721 737 738 740 740 742 742 756 757 762 764 765* 779 781 782 786 window_names 2 based char(32) array level 2 packed unaligned dcl 583 set ref 715* 715 721* 738 742* 742 762* 762 782* window_position_info based structure level 1 unaligned dcl 5-25 window_position_info_ptr 000260 automatic pointer dcl 5-37 set ref 661* 663 669 678 681 681 684 684 688 688 window_position_info_version constant fixed bin(17,0) initial dcl 5-35 ref 669 window_status 000264 automatic structure level 1 dcl 8-10 wl_n_windows 000250 automatic fixed bin(17,0) dcl 588 set ref 628* 629 629 707* 709* 710 710 756* 757 760 760 761 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BACKWARD_CHARACTER internal static fixed bin(17,0) initial dcl 7-13 BACKWARD_DELETE_CHARACTER internal static fixed bin(17,0) initial dcl 7-13 BACKWARD_DELETE_WORD internal static fixed bin(17,0) initial dcl 7-13 BACKWARD_WORD internal static fixed bin(17,0) initial dcl 7-13 BUILTIN_INFO_DIR internal static char(168) initial unaligned dcl 7-138 BUILTIN_INFO_ENTRY internal static char(32) initial unaligned dcl 7-139 CLEAR_WINDOW internal static fixed bin(17,0) initial dcl 7-13 DISPLAY_EDITOR_DOCUMENTATION internal static fixed bin(17,0) initial dcl 7-13 Direct_input internal static fixed bin(17,0) initial dcl 3-15 Direct_output internal static fixed bin(17,0) initial dcl 3-15 Direct_update internal static fixed bin(17,0) initial dcl 3-15 EXTERNAL_ROUTINE internal static fixed bin(17,0) initial dcl 7-13 FORWARD_CHARACTER internal static fixed bin(17,0) initial dcl 7-13 FORWARD_DELETE_CHARACTER internal static fixed bin(17,0) initial dcl 7-13 FORWARD_DELETE_WORD internal static fixed bin(17,0) initial dcl 7-13 FORWARD_WORD internal static fixed bin(17,0) initial dcl 7-13 HIGHEST_BUILTIN_ROUTINE_VALUE internal static fixed bin(17,0) initial dcl 7-13 HIGHEST_NUMARG_ACTION_VALUE internal static fixed bin(17,0) initial dcl 7-143 IGNORE internal static fixed bin(17,0) initial dcl 7-143 INITIAL_CAPITAL internal static fixed bin(17,0) initial dcl 7-13 KILL_TO_BEGINNING_OF_LINE internal static fixed bin(17,0) initial dcl 7-13 KILL_TO_END_OF_LINE internal static fixed bin(17,0) initial dcl 7-13 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 3-15 LOWERCASE_WORD internal static fixed bin(17,0) initial dcl 7-13 MORE_MODE_CLEAR internal static fixed bin(17,0) initial dcl 6-106 MORE_MODE_FOLD internal static fixed bin(17,0) initial dcl 6-106 MORE_MODE_SCROLL internal static fixed bin(17,0) initial dcl 6-106 MORE_MODE_WRAP internal static fixed bin(17,0) initial dcl 6-106 MOVE_TO_BEGINNING_OF_LINE internal static fixed bin(17,0) initial dcl 7-13 MOVE_TO_END_OF_LINE internal static fixed bin(17,0) initial dcl 7-13 MULTIPLIER internal static fixed bin(17,0) initial dcl 7-13 NEGATIVE_NUMBER_READER internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_0 internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_1 internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_2 internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_3 internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_4 internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_5 internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_6 internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_7 internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_8 internal static fixed bin(17,0) initial dcl 7-13 NUMBER_READER_9 internal static fixed bin(17,0) initial dcl 7-13 OP_CLEAR_SCREEN_NO_OPT internal static fixed bin(17,0) initial dcl 10-47 OP_ERROR internal static fixed bin(17,0) initial dcl 10-38 OP_READ_STATUS internal static fixed bin(17,0) initial dcl 10-120 PASS internal static fixed bin(17,0) initial dcl 7-143 PROCESS_INPUT_ESCAPE internal static fixed bin(17,0) initial dcl 7-13 QUOTE_CHARACTER internal static fixed bin(17,0) initial dcl 7-13 REJECT internal static fixed bin(17,0) initial dcl 7-143 REPEAT internal static fixed bin(17,0) initial dcl 7-143 SELF_INSERT internal static fixed bin(17,0) initial dcl 7-13 Sequential_input internal static fixed bin(17,0) initial dcl 3-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_update internal static fixed bin(17,0) initial dcl 3-15 Stream_input internal static fixed bin(17,0) initial dcl 3-15 Stream_output internal static fixed bin(17,0) initial dcl 3-15 TERMINATE_INPUT_LINE internal static fixed bin(17,0) initial dcl 7-13 TWIDDLE_CHARACTERS internal static fixed bin(17,0) initial dcl 7-13 TWIDDLE_WORDS internal static fixed bin(17,0) initial dcl 7-13 UNDEFINED internal static fixed bin(17,0) initial dcl 7-13 UPPERCASE_WORD internal static fixed bin(17,0) initial dcl 7-13 W_STATUS_ASYNC_EVENT internal static bit(36) initial dcl 8-17 W_STATUS_RECONNECTION internal static bit(36) initial dcl 8-17 W_STATUS_TTP_CHANGE internal static bit(36) initial dcl 8-17 YANK_FROM_KILL_RING internal static fixed bin(17,0) initial dcl 7-13 YANK_PREVIOUS_FROM_KILL_RING internal static fixed bin(17,0) initial dcl 7-13 attach_data_area based area(1024) dcl 6-113 break_table_info based structure level 1 dcl 5-76 break_table_info_version internal static fixed bin(17,0) initial dcl 5-80 break_table_info_version_1 internal static fixed bin(17,0) initial dcl 5-80 break_table_ptr automatic pointer dcl 5-75 breaks_array defined bit(1) array unaligned dcl 6-127 builtin_descriptions internal static varying char(128) initial array dcl 7-105 builtin_routine_names internal static char(32) initial array unaligned dcl 7-63 capabilities_info based structure level 1 dcl 9-3 capabilities_info_ptr automatic pointer dcl 9-19 capabilities_info_version internal static fixed bin(17,0) initial dcl 9-17 capabilities_info_version_1 internal static fixed bin(17,0) initial dcl 9-17 dispatch_table based structure level 1 dcl 6-155 dispatch_table_ptr automatic pointer dcl 6-153 get_editor_key_bindings_info based structure level 1 dcl 5-151 get_editor_key_bindings_info_ptr automatic pointer dcl 5-159 get_editor_key_bindings_info_version_1 internal static char(8) initial unaligned dcl 5-160 iox_$attach_loud 000000 constant entry external dcl 2-8 iox_$attach_name 000000 constant entry external dcl 2-8 iox_$close_file 000000 constant entry external dcl 2-8 iox_$delete_record 000000 constant entry external dcl 2-8 iox_$destroy_iocb 000000 constant entry external dcl 2-8 iox_$detach 000000 constant entry external dcl 2-8 iox_$err_no_operation 000000 constant entry external dcl 2-8 iox_$err_not_attached 000000 constant entry external dcl 2-8 iox_$err_not_closed 000000 constant entry external dcl 2-8 iox_$err_not_open 000000 constant entry external dcl 2-8 iox_$error_output external static pointer dcl 2-41 iox_$find_iocb_n 000000 constant entry external dcl 2-8 iox_$get_chars 000000 constant entry external dcl 2-8 iox_$get_line 000000 constant entry external dcl 2-8 iox_$iocb_version_sentinel external static char(4) dcl 4-51 iox_$look_iocb 000000 constant entry external dcl 2-8 iox_$modes 000000 constant entry external dcl 2-8 iox_$move_attach 000000 constant entry external dcl 2-8 iox_$open_file 000000 constant entry external dcl 2-8 iox_$position 000000 constant entry external dcl 2-8 iox_$propagate 000000 constant entry external dcl 2-8 iox_$put_chars 000000 constant entry external dcl 2-8 iox_$read_key 000000 constant entry external dcl 2-8 iox_$read_length 000000 constant entry external dcl 2-8 iox_$read_record 000000 constant entry external dcl 2-8 iox_$rewrite_record 000000 constant entry external dcl 2-8 iox_$seek_key 000000 constant entry external dcl 2-8 iox_$user_input external static pointer dcl 2-41 iox_$user_io external static pointer dcl 2-41 iox_$user_output external static pointer dcl 2-41 iox_$write_record 000000 constant entry external dcl 2-8 iox_modes internal static char(24) initial array dcl 3-6 killer based structure level 1 unaligned dcl 6-118 killer_alloc_size automatic fixed bin(17,0) dcl 6-124 killer_initial_alloc_size internal static fixed bin(17,0) initial dcl 6-125 line_editor_binding_count automatic fixed bin(17,0) dcl 5-121 line_editor_breaks_array defined bit(1) array unaligned dcl 6-128 line_editor_key_binding_info based structure level 1 dcl 5-129 line_editor_key_binding_info_ptr automatic pointer dcl 5-118 line_editor_key_binding_info_version_3 internal static char(8) initial unaligned dcl 5-148 line_editor_longest_sequence automatic fixed bin(17,0) dcl 5-123 more_handler_info based structure level 1 dcl 5-83 more_handler_info_ptr automatic pointer dcl 5-92 more_handler_info_version internal static fixed bin(17,0) initial dcl 5-94 more_handler_info_version_3 internal static fixed bin(17,0) initial dcl 5-94 more_prompt_info based structure level 1 dcl 5-108 more_prompt_info_ptr automatic pointer dcl 5-112 more_prompt_info_version_1 internal static char(8) initial unaligned dcl 5-114 more_responses_info based structure level 1 dcl 5-59 more_responses_info_ptr automatic pointer dcl 5-69 more_responses_info_version_1 internal static fixed bin(17,0) initial dcl 5-67 more_responses_version internal static fixed bin(17,0) initial dcl 5-67 numarg_action_names internal static char(6) initial array unaligned dcl 7-154 request_buffer based char unaligned dcl 10-116 request_prompt based char unaligned dcl 10-115 request_read_status based structure level 1 dcl 10-93 request_text_string based char unaligned dcl 10-66 set_editor_key_bindings_info based structure level 1 dcl 5-162 set_editor_key_bindings_info_ptr automatic pointer dcl 5-171 set_editor_key_bindings_info_version_1 internal static char(8) initial unaligned dcl 5-172 short_iox_modes internal static char(4) initial array dcl 3-12 tc_desk_info_ptr automatic pointer dcl 1-13 token_characters_info based structure level 1 dcl 5-97 token_characters_info_ptr automatic pointer dcl 5-104 token_characters_info_version_1 internal static char(8) initial unaligned dcl 5-106 valid_token_characters based char unaligned dcl 6-131 window_edit_line_info based structure level 1 unaligned dcl 5-177 window_edit_line_info_ptr automatic pointer dcl 5-186 window_edit_line_info_version_1 internal static char(8) initial unaligned dcl 5-183 window_image based char array unaligned dcl 6-135 window_image_string based char unaligned dcl 6-139 window_position_info_version_1 internal static fixed bin(17,0) initial dcl 5-35 window_status_info based structure level 1 dcl 5-45 window_status_info_ptr automatic pointer dcl 5-43 window_status_string automatic bit(36) unaligned dcl 8-7 window_status_version internal static fixed bin(17,0) initial dcl 5-52 window_status_version_1 internal static fixed bin(17,0) initial dcl 5-52 NAMES DECLARED BY EXPLICIT CONTEXT. ASYNC_EVENT 004240 constant label dcl 953 ref 882 SUCCESS 003772 constant label dcl 750 ref 744 bell 001567 constant entry external dcl 362 change_column 000312 constant entry external dcl 170 change_line 000336 constant entry external dcl 178 clean_things_up 005342 constant entry internal dcl 887 ref 147 193 221 251 261 271 293 302 324 348 366 377 387 484 521 532 569 950 953 clear_region 000775 constant entry external dcl 268 clear_to_end_of_line 000674 constant entry external dcl 257 clear_to_end_of_window 000456 constant entry external dcl 212 clear_window 000363 constant entry external dcl 188 clear_window_label 000373 constant label dcl 191 ref 217 common 004353 constant label dcl 617 ref 611 create 002743 constant entry external dcl 652 create_window 002726 constant entry external dcl 652 delete_chars 001451 constant entry external dcl 343 destroy 003632 constant entry external dcl 727 destroy_all 004112 constant entry external dcl 772 destroy_all_windows 004102 constant entry external dcl 772 destroy_window 003615 constant entry external dcl 727 do_request 005040 constant entry internal dcl 840 ref 150 199 229 237 245 253 265 276 309 333 351 368 404 493 535 576 957 done 004232 constant label dcl 948 ref 158 210 255 266 284 312 341 352 369 427 450 472 507 515 536 577 823 879 939 970 983 edit_line 002567 constant entry external dcl 546 error_return 004231 constant label dcl 946 ref 321 908 931 find_iocb 004666 constant entry internal dcl 796 ref 782 get_attach_data_ptr 005410 constant entry internal dcl 915 ref 143 163 172 180 191 215 259 270 291 300 316 345 356 364 376 385 482 519 531 557 567 get_common 002043 constant label dcl 391 ref 381 527 get_cursor_position 001542 constant entry external dcl 354 get_echoed_chars 001753 constant entry external dcl 383 get_one_unechoed 002220 constant entry external dcl 474 get_one_unechoed_char 002233 constant entry external dcl 474 get_some_more 002056 constant label dcl 399 ref 452 get_unechoed_chars 001661 constant entry external dcl 374 get_window_list 004325 constant entry internal dcl 601 ref 735 get_window_list$$no_create 004340 constant entry internal dcl 613 ref 703 778 insert_text 001107 constant entry external dcl 288 iocb_name 004655 constant entry internal dcl 790 ref 678 703 703 721 723 723 735 735 738 769 769 778 778 787 787 one_some_more 002312 constant label dcl 490 ref 501 overwrite_text 001172 constant entry external dcl 297 pc_common 000207 constant label dcl 147 ref 168 176 184 position_cursor 000167 constant entry external dcl 140 position_cursor_rel 000261 constant entry external dcl 160 require_cursor_valid 005376 constant entry internal dcl 903 ref 164 173 181 216 260 292 301 347 357 365 386 483 520 558 568 scroll_region 002631 constant entry external dcl 563 setup_request 004727 constant entry internal dcl 806 ref 149 194 222 252 262 272 294 303 325 349 367 378 388 485 522 533 570 955 store_window_list 004507 constant entry internal dcl 635 ref 723 769 787 sync 002475 constant entry external dcl 529 terminal_control_died 004230 constant label dcl 939 ref 872 tx_common 001252 constant label dcl 305 ref 295 validate_text 005470 constant entry internal dcl 972 ref 305 window_ 000154 constant entry external dcl 95 write_raw_text 001311 constant entry external dcl 314 write_sync_read 002372 constant entry external dcl 517 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7004 7066 6020 7014 Length 7632 6020 62 527 764 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME window_ 539 external procedure is an external procedure. on unit on line 147 64 on unit on unit on line 193 64 on unit on unit on line 221 64 on unit on unit on line 261 64 on unit on unit on line 271 64 on unit on unit on line 293 64 on unit on unit on line 302 64 on unit on unit on line 324 64 on unit on unit on line 348 64 on unit on unit on line 366 64 on unit on unit on line 377 64 on unit on unit on line 387 64 on unit on unit on line 484 64 on unit on unit on line 521 64 on unit on unit on line 532 64 on unit on unit on line 569 64 on unit get_window_list internal procedure shares stack frame of external procedure window_. begin block on line 675 begin block shares stack frame of external procedure window_. begin block on line 704 begin block shares stack frame of external procedure window_. begin block on line 754 begin block shares stack frame of external procedure window_. iocb_name internal procedure shares stack frame of external procedure window_. find_iocb internal procedure shares stack frame of external procedure window_. setup_request internal procedure shares stack frame of external procedure window_. do_request 126 internal procedure enables or reverts conditions. on unit on line 853 64 on unit begin block on line 860 begin block shares stack frame of internal procedure do_request. clean_things_up 72 internal procedure is called by several nonquick procedures. require_cursor_valid internal procedure shares stack frame of external procedure window_. get_attach_data_ptr internal procedure shares stack frame of external procedure window_. on unit on line 953 64 on unit validate_text internal procedure shares stack frame of external procedure window_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME do_request 000106 auto_desk_info begin block on line 860 window_ 000100 simple_r window_ 000112 real_window_iocb_ptr window_ 000114 target_iocbp window_ 000116 this_request_ptr window_ 000120 this_is_an_input_request window_ 000121 saved_ips_mask window_ 000130 line window_ 000131 col window_ 000132 rqr window_ 000146 rqt window_ 000164 rqd window_ 000200 rqg window_ 000227 one_char window_ 000230 rsr window_ 000246 window_list_ptr window_ 000250 wl_n_windows window_ 000251 i window_ 000252 j window_ 000253 code window_ 000254 terminal_iocb_ptr window_ 000256 iocb_ptr window_ 000260 window_position_info_ptr window_ 000262 attach_data_ptr window_ 000264 window_status window_ 000266 request_ptr window_ 000324 value_name get_window_list 000340 no_create get_window_list 000341 size_of_window_list get_window_list 000342 atd begin block on line 675 000402 new_window_list_ptr begin block on line 704 000406 new_window_list_ptr begin block on line 754 000426 iocb_ptr find_iocb THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other begin_return_mac return_mac tra_ext_1 enable_op shorten_stack ext_entry ext_entry_desc int_entry alloc_storage op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_system_free_area_ hcs_$reset_ips_mask hcs_$set_ips_mask iox_$attach_ptr iox_$close iox_$control iox_$detach_iocb iox_$find_iocb iox_$open value_$get_data value_$set_data window_io_iox_$edit_line THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$null_info_ptr error_table_$undefined_order_request error_table_$unimplemented_version video_et_$bad_window_id video_et_$cursor_position_undefined video_et_$string_not_printable video_et_$switch_not_window video_et_$window_status_pending video_et_$wsys_not_invoked LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 95 000153 97 000161 140 000162 143 000201 145 000202 146 000205 147 000207 149 000231 150 000235 152 000245 154 000247 155 000252 156 000254 158 000256 160 000257 163 000273 164 000274 166 000275 167 000302 168 000305 170 000306 172 000324 173 000325 174 000326 175 000331 176 000333 178 000334 180 000346 181 000347 182 000350 183 000353 184 000356 188 000357 191 000373 193 000374 194 000416 196 000425 197 000430 199 000432 200 000442 202 000444 203 000450 208 000452 210 000453 212 000454 215 000466 216 000467 217 000470 221 000477 222 000521 225 000540 227 000544 228 000546 229 000552 230 000562 232 000566 233 000570 234 000571 236 000574 237 000576 240 000611 243 000612 244 000614 245 000620 249 000632 251 000636 252 000642 253 000661 255 000671 257 000672 259 000704 260 000705 261 000706 262 000730 263 000747 264 000751 265 000756 266 000766 268 000767 270 001011 271 001012 272 001034 273 001053 274 001055 276 001060 278 001070 280 001072 281 001075 282 001100 284 001102 288 001103 291 001124 292 001125 293 001126 294 001150 295 001167 297 001170 300 001207 301 001210 302 001211 303 001233 305 001252 307 001262 308 001264 309 001271 310 001301 312 001306 314 001307 316 001326 317 001327 320 001341 321 001344 324 001345 325 001367 326 001406 328 001412 329 001414 331 001416 332 001420 333 001425 335 001435 337 001437 338 001442 339 001444 341 001446 343 001447 345 001461 347 001462 348 001463 349 001505 350 001524 351 001527 352 001537 354 001540 356 001554 357 001555 358 001556 359 001562 360 001564 362 001565 364 001577 365 001600 366 001601 367 001623 368 001642 369 001652 374 001653 376 001704 377 001705 378 001727 380 001746 381 001750 383 001751 385 001776 386 001777 387 002000 388 002022 389 002041 391 002043 393 002045 394 002047 395 002051 397 002055 399 002056 401 002057 402 002060 404 002065 406 002075 414 002077 416 002102 418 002105 419 002110 425 002112 427 002117 431 002120 432 002124 435 002126 438 002134 440 002137 441 002141 450 002145 452 002150 458 002151 460 002154 461 002157 463 002165 464 002166 467 002174 469 002200 470 002202 472 002212 474 002213 482 002243 483 002244 484 002245 485 002267 487 002306 488 002310 490 002312 493 002316 501 002326 504 002334 505 002337 506 002341 507 002344 511 002345 513 002356 515 002363 517 002364 519 002422 520 002423 521 002424 522 002446 524 002465 525 002470 527 002472 529 002473 531 002505 532 002506 533 002530 534 002547 535 002550 536 002560 546 002561 557 002577 558 002600 559 002601 561 002623 563 002624 567 002643 568 002644 569 002645 570 002667 573 002676 574 002700 575 002703 576 002710 577 002720 652 002721 660 002755 661 002761 662 002764 663 002765 665 003001 666 003004 669 003005 671 003010 672 003013 678 003014 681 003104 684 003206 688 003307 691 003410 692 003437 696 003443 697 003462 699 003464 700 003476 703 003477 707 003504 709 003513 710 003517 711 003527 712 003531 714 003535 715 003545 716 003555 717 003557 718 003565 719 003566 720 003570 721 003572 723 003605 725 003612 727 003613 731 003644 732 003673 735 003675 737 003702 738 003713 740 003734 742 003751 743 003761 744 003763 746 003764 747 003766 748 003771 750 003772 752 004004 756 004016 757 004022 760 004031 761 004041 762 004047 763 004057 764 004061 765 004067 769 004071 770 004076 772 004077 777 004117 778 004123 779 004130 781 004134 782 004145 783 004166 784 004200 785 004212 786 004214 787 004222 788 004227 939 004230 946 004231 948 004232 950 004233 951 004237 953 004240 955 004262 957 004270 958 004300 962 004311 963 004313 966 004315 967 004317 969 004321 970 004324 601 004325 610 004336 611 004337 613 004340 615 004351 617 004353 619 004355 621 004406 624 004462 626 004466 628 004471 629 004473 630 004503 631 004505 633 004506 635 004507 639 004520 641 004551 643 004564 644 004565 646 004642 648 004654 790 004655 793 004657 796 004666 801 004677 802 004723 806 004727 811 004731 813 004735 814 004737 815 004752 820 004755 822 004770 823 004773 826 004774 830 005013 831 005015 832 005017 833 005022 834 005024 835 005031 836 005035 838 005036 840 005037 844 005045 853 005052 855 005066 857 005075 859 005076 860 005130 863 005135 864 005140 865 005143 866 005145 867 005147 868 005151 869 005153 871 005206 872 005241 874 005247 875 005252 876 005255 877 005257 878 005312 879 005316 882 005321 885 005340 887 005341 890 005347 891 005357 894 005373 896 005375 903 005376 905 005377 907 005403 908 005406 910 005407 915 005410 923 005411 924 005412 925 005414 927 005415 928 005450 931 005462 934 005464 935 005467 972 005470 980 005501 982 005515 983 005520 985 005521 ----------------------------------------------------------- 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