COMPILATION LISTING OF SEGMENT xmail_window_manager_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/02/88 0745.0 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(86-01-28,Blair), approve(86-02-26,MCR7358), 15* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 16* Signal reissue_query from the quit handler so that the choice menu will 17* be redrawn or the question the user quit out of will be reprompted after 18* a quit or a disconnect. TRs 18711 18974. 19* 2) change(87-02-10,Blair), approve(87-02-10,MCR7618), 20* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 21* Adjust the screen after a reconnect so that we don't attempt to rebuild 22* menus on a reply and we print the "Editing..." line when the menus are 23* suppressed on a send. Error_list #114. 24* END HISTORY COMMENTS */ 25 26 27 xmail_window_manager_: proc (); 28 29 /************************************************************************/ 30 31 /* BEGIN DESCRIPTION 32* 33*function: 34* 35* This subroutine handles xmail window management. It contains the 36* following entrypoints: 37* 38* create_windows -- creates the windows needed by xmail. 39* These windows are created in the user_io 40* window. 41* destroy_windows -- destroys all of the windows created by 42* the create_windows entrypoint. 43* set_sw_size -- alters the size of the status window and 44* has the surrounding windows compensate. 45* set_menu_window_size -- alters the size of the menu window and 46* has the surrounding windows compensate. 47* reconnect -- resets the window status on all windows 48* and redisplays the whole screen if it 49* was found that there is "window status 50* pending". 51* reconnect_test -- like reconnect but also returns a bit 52* indicating whether the current quit condition 53* is a reconnect quit ("1"b = reconnect). 54* quit_handler -- like reconnect_test but also queries the 55* user if the quit is not a reconnect quit. 56* Returns "1"b if the quit is not a reconnect 57* AND if the user says he really wants to quit. 58* suppress_menu -- resizes the bottom window to all but the 59* size of the status window, which will display 60* an editing message. The whole bottom window 61* can then be used for editing. Used before 62* call to emacs_. 63* restore_menu -- restores the previous bottom window that was 64* saved in suppress_menu. Used after call to 65* emacs_. 66**/ 67 68 /************************************************************************/ 69 70 /* history: Written 1/8/82 by Suzanne Krupp 71* 72* 83-07-28 DJ Schimke: Removed unreferenced dcl of video_data_$terminal_iocb. 73* 74* 83-09-14 DJ Schimke: Modified to save the original user_io iocb in xmail 75* data rather than an internal static. This allows xmail_redisplay_ to clear 76* xmail's portion of the user's screen. TR 12413 77* 78* 84-04-06 DJ Schimke: Corrected the reference to error_table_$badcall which 79* was incorrectly spelled "bad_call". TR 17252 80* 81* 84-06-22 DJ Schimke: Changed xmail to resize user_i/o rather than syning 82* user_i/o to xmail_bottom_window. This allows user specified keybindings and 83* more prompts to be supported from within xmail. The code that cleared the 84* overlapping regions after resizing the windows was simplified by a single 85* call to clear the bottom window. xmail error list #92 86* 87* 84-09-20 JG Backs: Added 2 new entrypoints, suppress_menu and restore_menu, 88* to support the new personalization option "Remove Menu While Editing". 89* 90* 84-11-13 JG Backs: Added a 1 bit input parameter "condition_signalled" 91* to entrypoint destroy_windows, which is "1" if procedure is called during 92* condition cleanup and "0" all other times. This bit is tested to prevent 93* the screen from being cleared during a true cleanup condition. The xmail 94* module was also modified because it calls this entrypoint when the user 95* exits xmail, and the parameter indicates if screen output should be avoided. 96* 97*END DESCRIPTION 98**/ 99 100 /* PARAMETERS */ 101 102 dcl code fixed bin (35); 103 dcl new_window_height fixed bin parameter; 104 105 /* AUTOMATIC */ 106 107 dcl any_window_status_pending 108 bit (1) aligned; 109 dcl delta fixed bin; 110 dcl np_code fixed bin (35); 111 dcl reconnect_sw bit (1) aligned; 112 dcl stack_ptr ptr; 113 dcl yes_sw bit (1) aligned; 114 115 dcl 1 auto_window_status_info aligned like window_status_info; 116 dcl 1 bottom_window_info like window_position_info; 117 dcl 1 cond_info like condition_info; 118 dcl 1 menu_window_info like window_position_info; 119 dcl 1 status_window_info like window_position_info; 120 121 122 /* BUILTINS */ 123 124 dcl (addr, null) builtin; 125 126 /* ENTRIES */ 127 128 dcl find_condition_frame_ entry (ptr) returns (ptr); 129 dcl find_condition_info_ entry (ptr, ptr, fixed bin (35)); 130 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 131 dcl window_$overwrite_text entry (ptr, char (*), fixed bin (35)); 132 dcl window_$clear_window entry (ptr, fixed bin (35)); 133 dcl window_$position_cursor entry (ptr, fixed bin, fixed bin, fixed bin (35)); 134 dcl xmail_error_$no_code entry () options (variable); 135 dcl xmail_error_$no_print entry () options (variable); 136 dcl xmail_get_str_$yes_no entry (char (*) var, bit (1) aligned); 137 dcl xmail_redisplay_$all entry (); 138 dcl xmail_window_manager_$destroy_windows entry (bit (1)); 139 140 /* CONSTANTS */ 141 142 dcl COL1 fixed bin init (1) int static options (constant); 143 dcl LINE1 fixed bin init (1) int static options (constant); 144 dcl LOG char (1) init ("l") int static options (constant); 145 dcl MAX_SW_HEIGHT fixed bin init (2) int static options (constant); 146 dcl MENU_WINDOW_HEIGHT fixed bin init (1) int static options (constant); 147 dcl MIN_SW_HEIGHT fixed bin init (1) int static options (constant); 148 dcl NAME char (21) init ("xmail_window_manager_") int static options (constant); 149 dcl STATUS_WINDOW_HEIGHT fixed bin init (1) int static options (constant); 150 dcl XWMSM_HEADER char (45) init (" Editing...") int static options (constant); 151 152 /* EXTERNAL STATIC */ 153 154 dcl error_table_$bad_arg fixed bin (35) ext static; 155 dcl error_table_$badcall fixed bin (35) ext static; 156 dcl iox_$user_io ptr ext static; 157 dcl video_data_$terminal_iocb ptr ext static; 158 dcl video_et_$window_status_pending fixed bin (35) ext static; 159 dcl xmail_err_$insuff_room_for_xmail fixed bin (35) ext static; 160 161 /* INTERNAL STATIC */ 162 163 dcl 1 user_io_window_info like window_position_info int static; 164 165 /* BEGIN */ 166 167 call xmail_error_$no_print (error_table_$badcall, NAME, LOG); 168 169 create_windows: entry (code); 170 171 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 172 /* */ 173 /* This entry creates the xmail windows in the user_io window. There are four xmail */ 174 /* windows created: a status window (top), a multics mode status window (overlaps line */ 175 /* 1 of status window), a menu window (middle), and a user_io window */ 176 /* (bottom). */ 177 /* */ 178 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 179 180 code = 0; 181 xmail_windows.status.iocb, xmail_windows.mm_status.iocb, xmail_windows.menu.iocb, xmail_windows.bottom.iocb = null; 182 183 user_io_window_info.version = window_position_info_version; 184 call iox_$control (iox_$user_io, "get_window_info", addr (user_io_window_info), code); 185 if code ^= 0 then go to CREATE_EXIT; 186 187 if user_io_window_info.height < xmail_windows.min_lines_needed 188 then do; 189 code = xmail_err_$insuff_room_for_xmail; 190 go to CREATE_EXIT; 191 end; 192 193 call make_window ("xmail_status_window", /* window name */ 194 user_io_window_info.line, /* line origin */ 195 STATUS_WINDOW_HEIGHT, /* height */ 196 user_io_window_info.width, /* width */ 197 xmail_windows.status, /* window info */ 198 code); 199 if code ^= 0 200 then do; 201 call xmail_window_manager_$destroy_windows ("0"b); /* 0 = not cleanup condition */ 202 go to CREATE_EXIT; 203 end; 204 205 call make_window ("xmail_mm_status_window", /* window name */ 206 user_io_window_info.line, /* line origin */ 207 1, /* height */ 208 user_io_window_info.width, /* width */ 209 xmail_windows.mm_status, /* window info */ 210 code); 211 if code ^= 0 212 then do; 213 call xmail_window_manager_$destroy_windows ("0"b); /* 0 = not cleanup condition */ 214 go to CREATE_EXIT; 215 end; 216 217 call make_window ("xmail_menu_window", 218 user_io_window_info.line + STATUS_WINDOW_HEIGHT, 219 MENU_WINDOW_HEIGHT, 220 user_io_window_info.width, 221 xmail_windows.menu, 222 code); 223 if code ^= 0 then do; 224 call xmail_window_manager_$destroy_windows ("0"b); /* 0 = not cleanup condition */ 225 go to CREATE_EXIT; 226 end; 227 228 xmail_windows.bottom.iocb = iox_$user_io; 229 xmail_windows.bottom.position.version = window_position_info_version_1; 230 xmail_windows.bottom.position.line = user_io_window_info.line + 231 STATUS_WINDOW_HEIGHT + MENU_WINDOW_HEIGHT; 232 xmail_windows.bottom.position.width = user_io_window_info.width; 233 xmail_windows.bottom.position.height = user_io_window_info.height 234 - (STATUS_WINDOW_HEIGHT + MENU_WINDOW_HEIGHT); 235 call iox_$control (xmail_windows.bottom.iocb, "set_window_info", 236 addr (xmail_windows.bottom.position), code); 237 if code ^= 0 then do; 238 call xmail_window_manager_$destroy_windows ("0"b); /* 0 = not cleanup condition */ 239 go to CREATE_EXIT; 240 end; 241 242 CREATE_EXIT: 243 return; /* create_windows entry */ 244 245 destroy_windows: entry (condition_signalled); 246 247 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 248 /* */ 249 /* This entry destroys all xmail windows. */ 250 /* Input parameter indicates the following: */ 251 /* condition_signalled = 1 to signal cleanup condition. */ 252 /* condition_signalled = 0 to signal no condition. */ 253 /* */ 254 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 255 256 /* PARAMETERS */ 257 258 dcl condition_signalled bit (1); /* input parameter */ 259 /* 1 = cleanup condition */ 260 /* 0 = no condition */ 261 262 /* BEGIN */ 263 264 xmail_windows.bottom.iocb = iox_$user_io; 265 xmail_windows.bottom.position.version = window_position_info_version_1; 266 xmail_windows.bottom.position.line = user_io_window_info.line; 267 xmail_windows.bottom.position.width = user_io_window_info.width; 268 xmail_windows.bottom.position.height = user_io_window_info.height; 269 call iox_$control (xmail_windows.bottom.iocb, "set_window_info", 270 addr (xmail_windows.bottom.position), (0)); 271 272 /* Do not clear screen if cleanup condition was signalled */ 273 274 if ^condition_signalled 275 then call window_$clear_window (xmail_windows.bottom.iocb, (0)); /* ignore error */ 276 call unmake_window (xmail_windows.status.iocb); 277 call unmake_window (xmail_windows.mm_status.iocb); 278 call unmake_window (xmail_windows.menu.iocb); 279 280 return; /* destroy_windows entry */ 281 282 set_sw_size: entry (new_window_height, code); 283 284 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 285 /* */ 286 /* This entry sets the size of the status window taking or giving space from/to the */ 287 /* menu window. */ 288 /* */ 289 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 290 291 code = 0; 292 293 if new_window_height = xmail_windows.status.height 294 then go to SET_SW_EXIT; 295 296 if new_window_height < MIN_SW_HEIGHT | new_window_height > MAX_SW_HEIGHT 297 then do; 298 code = error_table_$bad_arg; 299 go to SET_SW_EXIT; 300 end; 301 302 delta = new_window_height - xmail_windows.status.height; 303 304 status_window_info = xmail_windows.status.position; 305 status_window_info.height = status_window_info.height + delta; 306 307 menu_window_info = xmail_windows.menu.position; 308 menu_window_info.origin.line = menu_window_info.origin.line + delta; 309 310 bottom_window_info = xmail_windows.bottom.position; 311 bottom_window_info.height = bottom_window_info.height - delta; 312 bottom_window_info.origin.line = bottom_window_info.origin.line + delta; 313 314 call iox_$control (xmail_windows.status.iocb, "set_window_info", addr (status_window_info), code); 315 if code ^= 0 316 then do; 317 call reset_window_sizes (); 318 go to SET_SW_EXIT; 319 end; 320 321 call iox_$control (xmail_windows.menu.iocb, "set_window_info", addr (menu_window_info), code); 322 if code ^= 0 323 then do; 324 call reset_window_sizes (); 325 go to SET_SW_EXIT; 326 end; 327 328 call iox_$control (xmail_windows.bottom.iocb, "set_window_info", addr (bottom_window_info), code); 329 if code ^= 0 330 then do; 331 call reset_window_sizes (); 332 go to SET_SW_EXIT; 333 end; 334 335 call window_$clear_window (xmail_windows.bottom.iocb, (0)); /* ignore any error */ 336 337 xmail_windows.status.position = status_window_info; 338 xmail_windows.menu.position = menu_window_info; 339 xmail_windows.bottom.position = bottom_window_info; 340 341 SET_SW_EXIT: 342 return; /* set_sw_size entry */ 343 344 set_menu_window_size: entry (new_window_height, code); 345 346 347 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 348 /* */ 349 /* This entry sets the size of the menu window taking or giving space to/from the */ 350 /* bottom window. */ 351 /* */ 352 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 353 354 code = 0; 355 356 if new_window_height = xmail_windows.menu.height 357 then go to SET_MENU_EXIT; 358 359 if new_window_height < 1 | new_window_height >= xmail_windows.menu.height + xmail_windows.bottom.height 360 then do; 361 code = error_table_$bad_arg; 362 go to SET_MENU_EXIT; 363 end; 364 365 delta = new_window_height - xmail_windows.menu.height; 366 367 menu_window_info = xmail_windows.menu.position; 368 menu_window_info.height = menu_window_info.height + delta; 369 370 bottom_window_info = xmail_windows.bottom.position; 371 bottom_window_info.height = bottom_window_info.height - delta; 372 bottom_window_info.origin.line = bottom_window_info.origin.line + delta; 373 374 call iox_$control (xmail_windows.menu.iocb, "set_window_info", addr (menu_window_info), code); 375 if code ^= 0 376 then do; 377 call reset_window_sizes (); 378 go to SET_MENU_EXIT; 379 end; 380 381 call iox_$control (xmail_windows.bottom.iocb, "set_window_info", addr (bottom_window_info), code); 382 if code ^= 0 383 then do; 384 call reset_window_sizes (); 385 go to SET_MENU_EXIT; 386 end; 387 388 call window_$clear_window (xmail_windows.bottom.iocb, (0)); /* ignore any error */ 389 390 xmail_windows.menu.position = menu_window_info; 391 xmail_windows.bottom.position = bottom_window_info; 392 393 SET_MENU_EXIT: 394 return; /* set_menu_window_size entry */ 395 396 quit_handler: entry returns (bit (1) aligned); 397 398 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 399 /* */ 400 /* This entry is called by the xmail pl1 modules that call emacs_. It is called on a */ 401 /* quit condition to protect the user from accidentally quitting before the current */ 402 /* action is finished (ie. the message is not saved or sent.) It returns true only if */ 403 /* the quit is not a reconnect quit and the user says yes to the prompt. Either way */ 404 /* this entry also checks status pending for any of the windows and resets it. If any */ 405 /* window had a status pending xmail_redisplay_$all is called to reset the display of */ 406 /* all windows. */ 407 /* */ 408 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 409 410 dcl reissue_query condition; 411 412 413 call check_window_status; 414 call check_for_reconnect (reconnect_sw); 415 416 if reconnect_sw then do; 417 yes_sw = "0"b; /* reconnect, don't quit */ 418 signal reissue_query; 419 end; 420 else do; 421 call xmail_get_str_$yes_no ("Any pending work will be lost." 422 || " Do you really want to quit?", yes_sw); /* BREAK hit, query before quitting */ 423 if ^yes_sw then 424 signal reissue_query; 425 end; 426 427 return (yes_sw); 428 429 reconnect: entry (); 430 431 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 432 /* */ 433 /* This entry is called to test for window status pending on the xmail windows and */ 434 /* reset it on any window that needs resetting. If any window status is pending the */ 435 /* xmail windows are redisplayed. */ 436 /* */ 437 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 438 439 call check_window_status; 440 return; /* reconnect entry */ 441 442 reconnect_test: entry returns (bit (1) aligned); 443 444 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 445 /* */ 446 /* This entry is called only by the xmail emacs extensions to determine if the quit */ 447 /* that they have detected is really a quit or whether it is actually a reconnect quit. */ 448 /* It returns true if the quit is a reconnect quit, false otherwise. */ 449 /* Either way this entry also checks status pending for any of the windows and resets */ 450 /* it. If any window had a status pending xmail_redisplay_$all is called to reset the */ 451 /* display of all windows. */ 452 /* */ 453 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 454 455 dcl ioa_$ioa_switch_nnl entry() options(variable); 456 dcl xmail_value_$get_with_default entry options(variable); 457 dcl response char (3) var; 458 459 call check_window_status; 460 461 call check_for_reconnect (reconnect_sw); 462 if reconnect_sw then do; 463 if (xmail_data.remove_menus & ^xmail_data.reply_request) then do; 464 call window_$clear_window (xmail_windows.status.iocb, (0)); 465 call window_$overwrite_text (xmail_windows.status.iocb, XWMSM_HEADER, code); 466 end; 467 if xmail_data.reply_request then do; 468 call xmail_value_$get_with_default ("original_up_window_yn", "yes", response, (0)); 469 /* The following literal is found in xmail_reply_msg_ and must be duplicated here to make the screen 470* look the same. It only appears when the original message is in an upper window and the reply is 471* in a second window. */ 472 if response = "yes" then call ioa_$ioa_switch_nnl (xmail_windows.menu.iocb, " *** Use ESC l to view previous page, ESC h to view next page ***"); 473 end; 474 end; 475 476 return (reconnect_sw); /* reconnect_test entry */ 477 478 suppress_menu: entry (); 479 480 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 481 /* */ 482 /* This entry is called by xmail pl1 modules that call emacs_ with the */ 483 /* personalization option "Remove Menu While Editing" in force. The only */ 484 /* exception is xmail_reply_msgs_, since that always removes the menu. */ 485 /* */ 486 /* This entry resizes the bottom window so the previous window info can be */ 487 /* restored via a call to another entrypoint, restore_menu, immediately */ 488 /* after emacs_ call. By resizing the bottom window, emacs can use all */ 489 /* but the status window to do the editing. */ 490 /* */ 491 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 492 493 /* AUTOMATIC */ 494 495 dcl xwmsm_code fixed bin (35); 496 497 /* CONSTANTS */ 498 499 dcl XWMSM_ERROR char (31) init ("Cannot remove menu as requested") int static options (constant); 500 501 /* BEGIN xmail_window_manager_$suppress_menu */ 502 503 call window_$clear_window (xmail_windows.status.iocb, (0)); /* ignore code */ 504 call window_$overwrite_text (xmail_windows.status.iocb, XWMSM_HEADER, xwmsm_code); 505 if xwmsm_code ^= 0 506 then call xmail_error_$no_code (xwmsm_code, NAME, "s", XWMSM_ERROR); 507 bottom_window_info = xmail_windows.bottom.position; 508 delta = xmail_windows.menu.height + xmail_windows.status.height - 1; 509 bottom_window_info.height = bottom_window_info.height + delta; 510 bottom_window_info.origin.line = bottom_window_info.origin.line - delta; 511 512 call iox_$control (xmail_windows.bottom.iocb, "set_window_info", addr (bottom_window_info), xwmsm_code); 513 514 if xwmsm_code ^= 0 515 then call xmail_error_$no_code (xwmsm_code, NAME, "s", XWMSM_ERROR); 516 517 call window_$clear_window (iox_$user_io, (0)); /* ignore code */ 518 519 suppress_menu_EXIT: 520 return; /* suppress_menu entry */ 521 522 restore_menu: entry (); 523 524 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 525 /* */ 526 /* This entry is used to restore the menu window by resizing the bottom */ 527 /* window from the previous information. It is called immediately */ 528 /* following the call to emacs_ in those xmail modules that use the editor.*/ 529 /* */ 530 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 531 532 /* AUTOMATIC */ 533 534 dcl xwmrm_code fixed bin (35); 535 536 /* BEGIN xmail_window_manager_$restore_menu */ 537 538 call iox_$control (xmail_windows.bottom.iocb, "set_window_info", addr (xmail_windows.bottom.position), xwmrm_code); 539 if xwmrm_code ^= 0 540 then call xmail_error_$no_code (xwmrm_code, NAME, "s", "Cannot restore menu information"); 541 542 543 restore_menu_EXIT: 544 return; /* restore_menu entry */ 545 546 /* I N T E R N A L P R O C E D U R E S */ 547 548 check_for_reconnect: proc (reconnect_quit); 549 550 dcl reconnect_quit bit (1) aligned parameter; 551 552 reconnect_quit = "0"b; 553 cond_info.version = condition_info_version_1; 554 cond_info.info_ptr = null (); 555 cond_info.flags.pad1 = "0"b; 556 cond_info.pad2 = "0"b; 557 cond_info.pad3 = "0"b; 558 stack_ptr = find_condition_frame_ (null ()); 559 if stack_ptr ^= null () then do; 560 call find_condition_info_ (stack_ptr, addr (cond_info), (0)); /* test cond_info.info_ptr rather than code */ 561 if cond_info.info_ptr ^= null () then do; 562 quit_info_ptr = cond_info.info_ptr; 563 reconnect_quit = quit_info.switches.reconnection_quit; 564 end; 565 end; 566 end check_for_reconnect; 567 568 check_window_status: proc; 569 570 any_window_status_pending = "0"b; 571 572 call window_$position_cursor (xmail_windows.status.iocb, LINE1, COL1, np_code); 573 if np_code = video_et_$window_status_pending 574 then do; 575 call fix_status (xmail_windows.status.iocb); 576 any_window_status_pending = "1"b; 577 end; 578 else if np_code ^= 0 then call xmail_error_$no_print (np_code, NAME, LOG); 579 580 call window_$position_cursor (xmail_windows.mm_status.iocb, LINE1, COL1, np_code); 581 if np_code = video_et_$window_status_pending 582 then do; 583 call fix_status (xmail_windows.mm_status.iocb); 584 any_window_status_pending = "1"b; 585 end; 586 else if np_code ^= 0 then call xmail_error_$no_print (np_code, NAME, LOG); 587 588 call window_$position_cursor (xmail_windows.menu.iocb, LINE1, COL1, np_code); 589 if np_code = video_et_$window_status_pending 590 then do; 591 call fix_status (xmail_windows.menu.iocb); 592 any_window_status_pending = "1"b; 593 end; 594 else if np_code ^= 0 then call xmail_error_$no_print (np_code, NAME, LOG); 595 596 call window_$position_cursor (xmail_windows.bottom.iocb, LINE1, COL1, np_code); 597 if np_code = video_et_$window_status_pending 598 then do; 599 call fix_status (xmail_windows.bottom.iocb); 600 any_window_status_pending = "1"b; 601 end; 602 else if np_code ^= 0 then call xmail_error_$no_print (np_code, NAME, LOG); 603 604 if any_window_status_pending then call xmail_redisplay_$all (); 605 end check_window_status; 606 607 fix_status: proc (P_iocb_ptr); 608 dcl P_iocb_ptr ptr parameter; 609 610 auto_window_status_info.version = window_status_version; 611 call iox_$control (P_iocb_ptr, "get_window_status", addr (auto_window_status_info), np_code); 612 if np_code ^= 0 then call xmail_error_$no_print (np_code, NAME, LOG); 613 end; 614 615 make_window: proc (name, line_origin, height, width, window, code); 616 617 /* Automatic */ 618 619 dcl code fixed bin (35); 620 dcl height fixed bin; 621 dcl line_origin fixed bin; 622 dcl name char (*); 623 dcl width fixed bin; 624 dcl 1 window aligned like xmail_window_info_format; 625 626 /* Builtin */ 627 628 dcl (addr, null) builtin; 629 630 /* Entry */ 631 632 dcl iox_$find_iocb entry (char (*), ptr, fixed bin (35)); 633 dcl window_$create entry (ptr, ptr, ptr, fixed bin (35)); 634 635 window.iocb = null; 636 window.position.version = window_position_info_version; 637 window.position.line = line_origin; 638 window.position.height = height; 639 window.position.width = width; 640 641 call iox_$find_iocb (name, window.iocb, code); 642 if code = 0 643 then call window_$create (video_data_$terminal_iocb, addr (window.position), window.iocb, code); 644 645 return; 646 end make_window; 647 648 unmake_window: proc (window_iocbp); 649 650 /* Parameter */ 651 652 dcl window_iocbp ptr; 653 654 /* Builtin */ 655 656 dcl null builtin; 657 658 /* Entries */ 659 660 dcl window_$destroy entry (ptr, fixed bin (35)); 661 662 if window_iocbp ^= null 663 then do; 664 call window_$destroy (window_iocbp, (0)); /* ignore code */ 665 window_iocbp = null; 666 end; 667 return; 668 669 end unmake_window; 670 671 reset_window_sizes: proc (); 672 673 call iox_$control (xmail_windows.status.iocb, "set_window_info", addr (xmail_windows.status.position), (0)); /* ignore error */ 674 call iox_$control (xmail_windows.menu.iocb, "set_window_info", addr (xmail_windows.menu.position), (0)); 675 call iox_$control (xmail_windows.bottom.iocb, "set_window_info", addr (xmail_windows.bottom.position), (0)); 676 677 end reset_window_sizes; 678 1 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 1 2 1 3 /* Structure for find_condition_info_. 1 4* 1 5* Written 1-Mar-79 by M. N. Davidoff. 1 6**/ 1 7 1 8 /* automatic */ 1 9 1 10 declare condition_info_ptr pointer; 1 11 1 12 /* based */ 1 13 1 14 declare 1 condition_info aligned based (condition_info_ptr), 1 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 1 16 2 version fixed binary, /* Must be 1 */ 1 17 2 condition_name char (32) varying, /* name of condition */ 1 18 2 info_ptr pointer, /* pointer to the condition data structure */ 1 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 1 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 1 21 2 flags unaligned, 1 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 1 23 3 pad1 bit (35), 1 24 2 pad2 bit (36), 1 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 1 26 2 pad3 (4) bit (36); 1 27 1 28 /* internal static */ 1 29 1 30 declare condition_info_version_1 1 31 fixed binary internal static options (constant) initial (1); 1 32 1 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 679 680 2 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 2 2 /* format: style2 */ 2 3 2 4 declare condition_info_header_ptr 2 5 pointer; 2 6 declare 1 condition_info_header 2 7 aligned based (condition_info_header_ptr), 2 8 2 length fixed bin, /* length in words of this structure */ 2 9 2 version fixed bin, /* version number of this structure */ 2 10 2 action_flags aligned, /* tell handler how to proceed */ 2 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 2 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 2 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 2 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 2 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 2 16 3 pad bit (32) unaligned, 2 17 2 info_string char (256) varying, /* may contain printable message */ 2 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 2 19 2 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 681 682 3 1 /* BEGIN INCLUDE FILE ... quit_info.incl.pl1 ... */ 3 2 3 3 /* The include file condition_info_header must be used with this file. */ 3 4 3 5 declare quit_info_ptr pointer; 3 6 declare 1 quit_info aligned based (quit_info_ptr), 3 7 2 header aligned like condition_info_header, 3 8 2 switches aligned, 3 9 3 reset_write bit (1) unaligned, 3 10 3 ips_quit bit (1) unaligned, 3 11 3 reconnection_quit bit (1) unaligned, 3 12 3 pad bit (33); 3 13 3 14 /* END INCLUDE FILE ... quit_info.incl.pl1 ... */ 683 684 4 1 /* Begin include file: xmail_windows.incl.pl1 */ 4 2 /* Created 6/24/81 by Paul Kyzivat */ 4 3 /* Mofified 6/20/84 by DJ Schimke to add the mm_status window */ 4 4 4 5 dcl 1 xmail_windows aligned external static, 4 6 2 initial_position fixed bin, 4 7 2 min_lines_needed fixed bin, 4 8 2 (status, mm_status, menu, bottom) aligned like xmail_window_info_format; 4 9 4 10 dcl 1 xmail_window_info_format aligned based, 4 11 2 iocb ptr, 4 12 2 position aligned like window_position_info; 4 13 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 */ 4 14 4 15 4 16 /* End include file: xmail_windows.incl.pl1 */ 685 686 6 1 /* begin include file window_status.incl.pl1 */ 6 2 /* Modified 28 March 1984 by Jon A. Rochlis to add terminal type change 6 3* and reconnection stuff. */ 6 4 /* format: style3 */ 6 5 /* interrupts that an application can recieve from a window */ 6 6 6 7 declare window_status_string 6 8 bit (36) unaligned; 6 9 6 10 declare 1 window_status aligned, 6 11 2 screen_invalid bit (1) unaligned, 6 12 2 async_change bit (1) unaligned, 6 13 2 ttp_change bit (1) unaligned, 6 14 2 reconnection bit (1) unaligned, 6 15 2 pad bit (32) unaligned; 6 16 6 17 declare ( 6 18 W_STATUS_SCREEN_INVALID 6 19 init ("1"b), 6 20 W_STATUS_ASYNC_EVENT 6 21 init ("01"b), 6 22 W_STATUS_TTP_CHANGE 6 23 init ("001"b), 6 24 W_STATUS_RECONNECTION 6 25 init ("0001"b) 6 26 ) bit (36) aligned internal static options (constant); 6 27 6 28 /* end include file window_status.incl.pl1 */ 687 688 7 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 7 2 7 3 7 4 /****^ HISTORY COMMENTS: 7 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 7 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 7 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 7 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 7 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 7 10* Adding switch to indicate request for menu display came from general help. 7 11* This is so general help menu will be displayed in top screen. 7 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 7 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 7 14* Add switch to indicate whether or not it is permissible to process mail 7 15* in other users' mailboxes (foreign_mailbox). 7 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 7 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 7 18* Add bit to indicate whether or not this is a true cleanup condition. 7 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 7 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 7 21* Rearrange to group all the bit flags together in one word with a pad. 7 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 7 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 7 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 7 25* you keep around a pointer to a structure which no longer exists. 7 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 7 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 7 28* Add a field to indicate whether or not we should process interactive msgs. 7 29* Increment version to 4.1 so default value will get set. 7 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 7 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 7 32* Add a field to indicate whether or not we're processing a reply so that we 7 33* will be able to rebuild the screens properly after a disconnect occurs. 7 34* Error_list #114. 7 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 7 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 7 37* Add a bit to indicate whether or not the error segment had to be created 7 38* in the pdir (because we didn't have sma access to the mlsys_dir). 7 39* END HISTORY COMMENTS */ 7 40 7 41 7 42 /* Written 5/13/81 by Paul H. Kyzivat */ 7 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 7 44* and to add n_fkeys_used */ 7 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 7 46* varying string. */ 7 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 7 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 7 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 7 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 7 51 7 52 dcl xmail_data_ptr external static ptr init (null); 7 53 7 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 7 55 2 mail_dir char (168) varying, 7 56 2 first_label label, 7 57 2 quit_label label, 7 58 2 value_seg_pathname char (168) varying, 7 59 2 moved_user_io ptr, 7 60 2 normal_usage char (80) unal, 7 61 2 function_key_info, 7 62 3 function_key_data_ptr ptr, 7 63 3 n_fkeys_used fixed bin, 7 64 2 actee, 7 65 3 person char(32) varying, 7 66 3 project char(32) varying, 7 67 2 flags aligned, 7 68 3 mail_in_incoming bit (1) unal, 7 69 3 lists_as_menus bit (1) unal, /* personalization */ 7 70 3 remove_menus bit (1) unal, /* personalization */ 7 71 3 confirm_print bit (1) unal, /* personalization */ 7 72 3 multics_mode bit (1) unal, /* personalization */ 7 73 3 interactive_msgs bit (1) unal, /* personalization */ 7 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 7 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 7 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 7 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 7 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 7 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 7 80 3 pad bit (24) unal; 7 81 7 82 7 83 7 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 7 85 7 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 689 690 691 end xmail_window_manager_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/02/88 0745.0 xmail_window_manager_.pl1 >spec>install>MR12.2-1098>xmail_window_manager_.pl1 679 1 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 681 2 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 683 3 02/09/82 1152.4 quit_info.incl.pl1 >ldd>include>quit_info.incl.pl1 685 4 12/02/84 1132.9 xmail_windows.incl.pl1 >ldd>include>xmail_windows.incl.pl1 4-14 5 09/12/84 0916.7 window_control_info.incl.pl1 >ldd>include>window_control_info.incl.pl1 687 6 09/12/84 0916.7 window_status.incl.pl1 >ldd>include>window_status.incl.pl1 689 7 09/02/88 0743.4 xmail_data.incl.pl1 >spec>install>MR12.2-1098>xmail_data.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. COL1 000057 constant fixed bin(17,0) initial dcl 142 set ref 572* 580* 588* 596* LINE1 000057 constant fixed bin(17,0) initial dcl 143 set ref 572* 580* 588* 596* LOG 000032 constant char(1) initial packed unaligned dcl 144 set ref 167* 578* 586* 594* 602* 612* MAX_SW_HEIGHT constant fixed bin(17,0) initial dcl 145 ref 296 MENU_WINDOW_HEIGHT 000057 constant fixed bin(17,0) initial dcl 146 set ref 217* 230 233 MIN_SW_HEIGHT constant fixed bin(17,0) initial dcl 147 ref 296 NAME 000024 constant char(21) initial packed unaligned dcl 148 set ref 167* 505* 514* 539* 578* 586* 594* 602* 612* P_iocb_ptr parameter pointer dcl 608 set ref 607 611* STATUS_WINDOW_HEIGHT 000057 constant fixed bin(17,0) initial dcl 149 set ref 193* 217 230 233 XWMSM_ERROR 000000 constant char(31) initial packed unaligned dcl 499 set ref 505* 514* XWMSM_HEADER 000010 constant char(45) initial packed unaligned dcl 150 set ref 465* 504* addr builtin function dcl 628 in procedure "make_window" ref 642 642 addr builtin function dcl 124 in procedure "xmail_window_manager_" ref 184 184 235 235 269 269 314 314 321 321 328 328 374 374 381 381 512 512 538 538 560 560 611 611 673 673 674 674 675 675 any_window_status_pending 000100 automatic bit(1) dcl 107 set ref 570* 576* 584* 592* 600* 604 auto_window_status_info 000110 automatic structure level 1 dcl 115 set ref 611 611 bottom 32 000064 external static structure level 2 dcl 4-5 bottom_window_info 000112 automatic structure level 1 unaligned dcl 116 set ref 310* 328 328 339 370* 381 381 391 507* 512 512 code parameter fixed bin(35,0) dcl 102 in procedure "xmail_window_manager_" set ref 169 180* 184* 185 189* 193* 199 205* 211 217* 223 235* 237 282 291* 298* 314* 315 321* 322 328* 329 344 354* 361* 374* 375 381* 382 465* code parameter fixed bin(35,0) dcl 619 in procedure "make_window" set ref 615 641* 642 642* cond_info 000120 automatic structure level 1 unaligned dcl 117 set ref 560 560 condition_info based structure level 1 dcl 1-14 condition_info_header based structure level 1 dcl 2-6 condition_info_version_1 constant fixed bin(17,0) initial dcl 1-30 ref 553 condition_signalled parameter bit(1) packed unaligned dcl 258 ref 245 274 delta 000101 automatic fixed bin(17,0) dcl 109 set ref 302* 305 308 311 312 365* 368 371 372 508* 509 510 error_table_$bad_arg 000044 external static fixed bin(35,0) dcl 154 ref 298 361 error_table_$badcall 000046 external static fixed bin(35,0) dcl 155 set ref 167* extent 27 000064 external static structure level 4 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" extent 7 000064 external static structure level 4 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" extent 37 000064 external static structure level 4 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" extent 3 000010 internal static structure level 2 in structure "user_io_window_info" unaligned dcl 163 in procedure "xmail_window_manager_" extent 3 000152 automatic structure level 2 in structure "menu_window_info" unaligned dcl 118 in procedure "xmail_window_manager_" extent 3 000157 automatic structure level 2 in structure "status_window_info" unaligned dcl 119 in procedure "xmail_window_manager_" extent 3 000112 automatic structure level 2 in structure "bottom_window_info" unaligned dcl 116 in procedure "xmail_window_manager_" extent 5 parameter structure level 3 in structure "window" dcl 624 in procedure "make_window" find_condition_frame_ 000016 constant entry external dcl 128 ref 558 find_condition_info_ 000020 constant entry external dcl 129 ref 560 flags 22 000120 automatic structure level 2 in structure "cond_info" packed packed unaligned dcl 117 in procedure "xmail_window_manager_" flags 213 based structure level 2 in structure "xmail_data" dcl 7-54 in procedure "xmail_window_manager_" height 4 000112 automatic fixed bin(17,0) level 3 in structure "bottom_window_info" dcl 116 in procedure "xmail_window_manager_" set ref 311* 311 371* 371 509* 509 height 6 parameter fixed bin(17,0) level 4 in structure "window" dcl 624 in procedure "make_window" set ref 638* height parameter fixed bin(17,0) dcl 620 in procedure "make_window" ref 615 638 height 4 000010 internal static fixed bin(17,0) level 3 in structure "user_io_window_info" dcl 163 in procedure "xmail_window_manager_" set ref 187 233 268 height 10 000064 external static fixed bin(17,0) level 5 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 293 302 508 height 40 000064 external static fixed bin(17,0) level 5 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 233* 268* 359 height 4 000157 automatic fixed bin(17,0) level 3 in structure "status_window_info" dcl 119 in procedure "xmail_window_manager_" set ref 305* 305 height 4 000152 automatic fixed bin(17,0) level 3 in structure "menu_window_info" dcl 118 in procedure "xmail_window_manager_" set ref 368* 368 height 30 000064 external static fixed bin(17,0) level 5 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 356 359 365 508 info_ptr 14 000120 automatic pointer level 2 dcl 117 set ref 554* 561 562 ioa_$ioa_switch_nnl 000060 constant entry external dcl 455 ref 472 iocb 22 000064 external static pointer level 3 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 181* 278* 321* 374* 472* 588* 591* 674* iocb 2 000064 external static pointer level 3 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 181* 276* 314* 464* 465* 503* 504* 572* 575* 673* iocb 32 000064 external static pointer level 3 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 181* 228* 235* 264* 269* 274* 328* 335* 381* 388* 512* 538* 596* 599* 675* iocb 12 000064 external static pointer level 3 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 181* 277* 580* 583* iocb parameter pointer level 2 in structure "window" dcl 624 in procedure "make_window" set ref 635* 641* 642* iox_$control 000022 constant entry external dcl 130 ref 184 235 269 314 321 328 374 381 512 538 611 673 674 675 iox_$find_iocb 000070 constant entry external dcl 632 ref 641 iox_$user_io 000050 external static pointer dcl 156 set ref 184* 228 264 517* line 36 000064 external static fixed bin(17,0) level 5 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 230* 266* line 2 000112 automatic fixed bin(17,0) level 3 in structure "bottom_window_info" dcl 116 in procedure "xmail_window_manager_" set ref 312* 312 372* 372 510* 510 line 2 000152 automatic fixed bin(17,0) level 3 in structure "menu_window_info" dcl 118 in procedure "xmail_window_manager_" set ref 308* 308 line 4 parameter fixed bin(17,0) level 4 in structure "window" dcl 624 in procedure "make_window" set ref 637* line 2 000010 internal static fixed bin(17,0) level 3 in structure "user_io_window_info" dcl 163 in procedure "xmail_window_manager_" set ref 193* 205* 217 230 266 line_origin parameter fixed bin(17,0) dcl 621 ref 615 637 menu 22 000064 external static structure level 2 dcl 4-5 set ref 217* menu_window_info 000152 automatic structure level 1 unaligned dcl 118 set ref 307* 321 321 338 367* 374 374 390 min_lines_needed 1 000064 external static fixed bin(17,0) level 2 dcl 4-5 ref 187 mm_status 12 000064 external static structure level 2 dcl 4-5 set ref 205* name parameter char packed unaligned dcl 622 set ref 615 641* new_window_height parameter fixed bin(17,0) dcl 103 ref 282 293 296 296 302 344 356 359 359 365 np_code 000102 automatic fixed bin(35,0) dcl 110 set ref 572* 573 578 578* 580* 581 586 586* 588* 589 594 594* 596* 597 602 602* 611* 612 612* null builtin function dcl 628 in procedure "make_window" ref 635 null builtin function dcl 124 in procedure "xmail_window_manager_" ref 181 554 558 558 559 561 null builtin function dcl 656 in procedure "unmake_window" ref 662 665 origin 3 parameter structure level 3 in structure "window" dcl 624 in procedure "make_window" origin 1 000010 internal static structure level 2 in structure "user_io_window_info" unaligned dcl 163 in procedure "xmail_window_manager_" origin 1 000112 automatic structure level 2 in structure "bottom_window_info" unaligned dcl 116 in procedure "xmail_window_manager_" origin 35 000064 external static structure level 4 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" origin 1 000152 automatic structure level 2 in structure "menu_window_info" unaligned dcl 118 in procedure "xmail_window_manager_" pad1 22(01) 000120 automatic bit(35) level 3 packed packed unaligned dcl 117 set ref 555* pad2 23 000120 automatic bit(36) level 2 packed packed unaligned dcl 117 set ref 556* pad3 26 000120 automatic bit(36) array level 2 packed packed unaligned dcl 117 set ref 557* position 4 000064 external static structure level 3 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 304 337* 673 673 position 2 parameter structure level 2 in structure "window" dcl 624 in procedure "make_window" set ref 642 642 position 24 000064 external static structure level 3 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 307 338* 367 390* 674 674 position 34 000064 external static structure level 3 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 235 235 269 269 310 339* 370 391* 507 538 538 675 675 quit_info based structure level 1 dcl 3-6 quit_info_ptr 000176 automatic pointer dcl 3-5 set ref 562* 563 reconnect_quit parameter bit(1) dcl 550 set ref 548 552* 563* reconnect_sw 000103 automatic bit(1) dcl 111 set ref 414* 416 461* 462 476 reconnection_quit 105(02) based bit(1) level 3 packed packed unaligned dcl 3-6 ref 563 reissue_query 000164 stack reference condition dcl 410 ref 418 423 remove_menus 213(02) based bit(1) level 3 packed packed unaligned dcl 7-54 ref 463 reply_request 213(10) based bit(1) level 3 packed packed unaligned dcl 7-54 ref 463 467 response 000172 automatic varying char(3) dcl 457 set ref 468* 472 stack_ptr 000104 automatic pointer dcl 112 set ref 558* 559 560* status 2 000064 external static structure level 2 dcl 4-5 set ref 193* status_window_info 000157 automatic structure level 1 unaligned dcl 119 set ref 304* 314 314 337 switches 105 based structure level 2 dcl 3-6 user_io_window_info 000010 internal static structure level 1 unaligned dcl 163 set ref 184 184 version 000010 internal static fixed bin(17,0) level 2 in structure "user_io_window_info" dcl 163 in procedure "xmail_window_manager_" set ref 183* version 000110 automatic fixed bin(17,0) level 2 in structure "auto_window_status_info" dcl 115 in procedure "xmail_window_manager_" set ref 610* version 2 000120 automatic fixed bin(17,0) level 2 in structure "cond_info" dcl 117 in procedure "xmail_window_manager_" set ref 553* version 34 000064 external static fixed bin(17,0) level 4 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 229* 265* version 2 parameter fixed bin(17,0) level 3 in structure "window" dcl 624 in procedure "make_window" set ref 636* video_data_$terminal_iocb 000052 external static pointer dcl 157 set ref 642* video_et_$window_status_pending 000054 external static fixed bin(35,0) dcl 158 ref 573 581 589 597 width 37 000064 external static fixed bin(17,0) level 5 in structure "xmail_windows" dcl 4-5 in procedure "xmail_window_manager_" set ref 232* 267* width parameter fixed bin(17,0) dcl 623 in procedure "make_window" ref 615 639 width 5 parameter fixed bin(17,0) level 4 in structure "window" dcl 624 in procedure "make_window" set ref 639* width 3 000010 internal static fixed bin(17,0) level 3 in structure "user_io_window_info" dcl 163 in procedure "xmail_window_manager_" set ref 193* 205* 217* 232 267 window parameter structure level 1 dcl 624 set ref 615 window_$clear_window 000026 constant entry external dcl 132 ref 274 335 388 464 503 517 window_$create 000072 constant entry external dcl 633 ref 642 window_$destroy 000074 constant entry external dcl 660 ref 664 window_$overwrite_text 000024 constant entry external dcl 131 ref 465 504 window_$position_cursor 000030 constant entry external dcl 133 ref 572 580 588 596 window_iocbp parameter pointer dcl 652 set ref 648 662 664* 665* window_position_info based structure level 1 unaligned dcl 5-25 window_position_info_version constant fixed bin(17,0) initial dcl 5-35 ref 183 636 window_position_info_version_1 constant fixed bin(17,0) initial dcl 5-35 ref 229 265 window_status_info based structure level 1 dcl 5-45 window_status_version constant fixed bin(17,0) initial dcl 5-52 ref 610 xmail_data based structure level 1 dcl 7-54 xmail_data_ptr 000066 external static pointer initial dcl 7-52 ref 463 463 467 xmail_err_$insuff_room_for_xmail 000056 external static fixed bin(35,0) dcl 159 ref 189 xmail_error_$no_code 000032 constant entry external dcl 134 ref 505 514 539 xmail_error_$no_print 000034 constant entry external dcl 135 ref 167 578 586 594 602 612 xmail_get_str_$yes_no 000036 constant entry external dcl 136 ref 421 xmail_redisplay_$all 000040 constant entry external dcl 137 ref 604 xmail_value_$get_with_default 000062 constant entry external dcl 456 ref 468 xmail_window_info_format based structure level 1 dcl 4-10 xmail_window_manager_$destroy_windows 000042 constant entry external dcl 138 ref 201 213 224 238 xmail_windows 000064 external static structure level 1 dcl 4-5 xwmrm_code 000175 automatic fixed bin(35,0) dcl 534 set ref 538* 539 539* xwmsm_code 000174 automatic fixed bin(35,0) dcl 495 set ref 504* 505 505* 512* 514 514* yes_sw 000106 automatic bit(1) dcl 113 set ref 417* 421* 423 427 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. W_STATUS_ASYNC_EVENT internal static bit(36) initial dcl 6-17 W_STATUS_RECONNECTION internal static bit(36) initial dcl 6-17 W_STATUS_SCREEN_INVALID internal static bit(36) initial dcl 6-17 W_STATUS_TTP_CHANGE internal static bit(36) initial dcl 6-17 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 condition_info_header_ptr automatic pointer dcl 2-4 condition_info_ptr automatic pointer dcl 1-10 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 packed unaligned dcl 5-160 line_editor_binding_count automatic fixed bin(17,0) dcl 5-121 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 packed 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 packed 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 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 packed unaligned dcl 5-172 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 packed unaligned dcl 5-106 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 packed unaligned dcl 5-183 window_position_info_ptr automatic pointer dcl 5-37 window_status automatic structure level 1 dcl 6-10 window_status_info_ptr automatic pointer dcl 5-43 window_status_string automatic bit(36) packed unaligned dcl 6-7 window_status_version_1 internal static fixed bin(17,0) initial dcl 5-52 xmail_version internal static varying char(10) initial dcl 7-84 NAMES DECLARED BY EXPLICIT CONTEXT. CREATE_EXIT 000646 constant label dcl 242 ref 185 190 202 214 225 239 SET_MENU_EXIT 001570 constant label dcl 393 set ref 356 362 378 385 SET_SW_EXIT 001332 constant label dcl 341 ref 293 299 318 325 332 check_for_reconnect 002425 constant entry internal dcl 548 ref 414 461 check_window_status 002522 constant entry internal dcl 568 ref 413 439 459 create_windows 000262 constant entry external dcl 169 destroy_windows 000660 constant entry external dcl 245 fix_status 003024 constant entry internal dcl 607 ref 575 583 591 599 make_window 003110 constant entry internal dcl 615 ref 193 205 217 quit_handler 001602 constant entry external dcl 396 reconnect 001667 constant entry external dcl 429 reconnect_test 001710 constant entry external dcl 442 reset_window_sizes 003227 constant entry internal dcl 671 ref 317 324 331 377 384 restore_menu 002317 constant entry external dcl 522 restore_menu_EXIT 002416 constant label dcl 543 set_menu_window_size 001343 constant entry external dcl 344 set_sw_size 001022 constant entry external dcl 282 suppress_menu 002073 constant entry external dcl 478 suppress_menu_EXIT 002307 constant label dcl 519 unmake_window 003203 constant entry internal dcl 648 ref 276 277 278 xmail_window_manager_ 000227 constant entry external dcl 27 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4020 4116 3366 4030 Length 4564 3366 76 432 432 6 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_window_manager_ 354 external procedure is an external procedure. check_for_reconnect internal procedure shares stack frame of external procedure xmail_window_manager_. check_window_status internal procedure shares stack frame of external procedure xmail_window_manager_. fix_status internal procedure shares stack frame of external procedure xmail_window_manager_. make_window internal procedure shares stack frame of external procedure xmail_window_manager_. unmake_window internal procedure shares stack frame of external procedure xmail_window_manager_. reset_window_sizes internal procedure shares stack frame of external procedure xmail_window_manager_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 user_io_window_info xmail_window_manager_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME xmail_window_manager_ 000100 any_window_status_pending xmail_window_manager_ 000101 delta xmail_window_manager_ 000102 np_code xmail_window_manager_ 000103 reconnect_sw xmail_window_manager_ 000104 stack_ptr xmail_window_manager_ 000106 yes_sw xmail_window_manager_ 000110 auto_window_status_info xmail_window_manager_ 000112 bottom_window_info xmail_window_manager_ 000120 cond_info xmail_window_manager_ 000152 menu_window_info xmail_window_manager_ 000157 status_window_info xmail_window_manager_ 000172 response xmail_window_manager_ 000174 xwmsm_code xmail_window_manager_ 000175 xwmrm_code xmail_window_manager_ 000176 quit_info_ptr xmail_window_manager_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac signal_op ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. find_condition_frame_ find_condition_info_ ioa_$ioa_switch_nnl iox_$control iox_$find_iocb window_$clear_window window_$create window_$destroy window_$overwrite_text window_$position_cursor xmail_error_$no_code xmail_error_$no_print xmail_get_str_$yes_no xmail_redisplay_$all xmail_value_$get_with_default xmail_window_manager_$destroy_windows THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$badcall iox_$user_io video_data_$terminal_iocb video_et_$window_status_pending xmail_data_ptr xmail_err_$insuff_room_for_xmail xmail_windows LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 000226 167 000236 169 000256 180 000274 181 000275 183 000304 184 000306 185 000337 187 000341 189 000346 190 000350 193 000351 199 000411 201 000413 202 000424 205 000425 211 000466 213 000470 214 000501 217 000502 223 000544 224 000546 225 000557 228 000560 229 000565 230 000567 232 000572 233 000574 235 000601 237 000632 238 000634 239 000645 242 000646 245 000655 264 000667 265 000674 266 000676 267 000700 268 000702 269 000704 274 000736 276 000757 277 000767 278 000777 280 001007 282 001016 291 001034 293 001035 296 001043 298 001047 299 001051 302 001052 304 001054 305 001066 307 001070 308 001102 310 001104 311 001116 312 001120 314 001122 315 001154 317 001156 318 001157 321 001160 322 001214 324 001216 325 001217 328 001220 329 001253 331 001255 332 001256 335 001257 337 001272 338 001306 339 001320 341 001332 344 001341 354 001355 356 001356 359 001364 361 001372 362 001374 365 001375 367 001400 368 001412 370 001414 371 001426 372 001430 374 001432 375 001464 377 001466 378 001467 381 001470 382 001523 384 001525 385 001526 388 001527 390 001542 391 001556 393 001570 396 001577 413 001610 414 001611 416 001613 417 001616 418 001617 419 001622 421 001623 423 001645 427 001653 429 001666 439 001676 440 001677 442 001706 459 001716 461 001717 462 001721 463 001724 464 001735 465 001747 467 001771 468 001777 472 002031 476 002057 478 002072 503 002102 504 002115 505 002137 507 002170 508 002204 509 002210 510 002211 512 002213 514 002244 517 002275 519 002307 522 002316 538 002326 539 002362 543 002416 548 002425 552 002427 553 002430 554 002432 555 002434 556 002436 557 002437 558 002450 559 002463 560 002467 561 002505 562 002511 563 002513 566 002521 568 002522 570 002523 572 002524 573 002542 575 002546 576 002555 577 002557 578 002560 580 002602 581 002620 583 002624 584 002633 585 002635 586 002636 588 002660 589 002676 591 002702 592 002711 593 002713 594 002714 596 002736 597 002754 599 002760 600 002767 601 002771 602 002772 604 003014 605 003023 607 003024 610 003026 611 003030 612 003064 613 003107 615 003110 635 003121 636 003124 637 003127 638 003131 639 003133 641 003135 642 003157 645 003202 648 003203 662 003205 664 003211 665 003223 667 003226 671 003227 673 003230 674 003266 675 003324 677 003361 ----------------------------------------------------------- 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