COMPILATION LISTING OF SEGMENT ws_tty_main_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 01/24/89 0849.7 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1986 * 6* * * 7* *********************************************************** */ 8 9 /****^ HISTORY COMMENTS: 10* 1) change(86-12-05,RBarstad), approve(86-12-11,MCR7585), 11* audit(87-07-23,Gilcrease), install(87-08-07,MR12.1-1075): 12* Created. 13* END HISTORY COMMENTS */ 14 15 /* format: style3,^ifthenstmt,indthenelse,^indnoniterdo,^indprocbody,initcol3,dclind5,idind32 */ 16 ws_tty_main_: 17 proc (); 18 return; 19 20 /* ------------------------ DESCRIPTION ---------------------------------- */ 21 22 /****^ VERSION 1.35 23* 24* ws_tty_ entries to support video mode in MOWSE work station. 25* All calls here to iox_ are actually to mowse_io_ 26* 27* ws_tty_$abort 28* ws_tty_$attach 29* ws_tty_$detach 30* ws_tty_$event 31* ws_tty_$index 32* ws_tty_$order 33* 34**/ 35 36 /* ------------------------ PARAMETERS ----------------------------------- */ 37 38 dcl I_argptr ptr parm; /* pointer to order data */ 39 dcl I_dflag fixed bin parm; /* disposition flag */ 40 dcl I_event fixed bin (71) parm; /* event channel name */ 41 dcl I_name char (*) parm; /* tty name such as tty192 */ 42 dcl I_order char (*) parm; /* order name */ 43 dcl I_resetsw fixed bin parm; /* abort code, 1 reset read, 2 reset write, 3 reset both */ 44 dcl I_iocb_ptr ptr parm; /* ptr for iox */ 45 dcl O_code fixed bin (35) parm; /* error code */ 46 dcl O_tty_state fixed bin parm; /* tty state, 1 ignored, 2 listening, 5 dialed */ 47 48 /* ------------------------ AUTOMATIC ------------------------------------ */ 49 50 dcl argptr ptr; /* pointer to order data */ 51 dcl break_table_ptr ptr; 52 dcl break_table_size fixed bin; 53 dcl code fixed bin (35); /* error code */ 54 dcl dflag fixed bin; /* disposition flag */ 55 dcl event fixed bin (71); /* event channel name */ 56 dcl event_code fixed bin (35); 57 dcl get_msg_id char (3); /* message id returned from ws */ 58 dcl iocb_ptr ptr; /* iocb pointer for iox */ 59 dcl name char (32); 60 dcl num_exit_tries fixed bin; /* count of reads for "SMX" */ 61 dcl order char (32); 62 dcl resetsw fixed bin; /* abort code, 1 reset read, 2 reset write, 3 reset both */ 63 dcl rw_switch bit (2) aligned; /* bit-string version of reset read/write switch */ 64 dcl tty_state fixed bin; /* tty state, 1 ignored, 2 listening, 5 dialed */ 65 dcl saved_mask bit (36) aligned; /* saved ips mask */ 66 dcl unmask_count fixed bin; 67 dcl count fixed bin; 68 69 dcl 1 saved_mask_bit aligned based (addr (saved_mask)), 70 2 interrupts bit (35) unaligned, 71 2 control bit (1) unaligned; 72 73 dcl string_size fixed bin (21); 74 dcl string_ptr ptr; 75 dcl string char (MAX_SEND_MSG_SIZE); 76 dcl 1 video_mode_info like mowse_io_set_video_mode_info; 77 78 /* ------------------------ BASED ---------------------------------------- */ 79 80 dcl 1 modes_info aligned based (argptr), 81 2 mode_length fixed bin, 82 2 mode_string char (512); 83 84 dcl new_modes char (512); 85 86 /* ------------------------ CONSTANTS ------------------------------------ */ 87 88 dcl ( 89 ME char (12) init ("ws_tty_main_"), 90 V1_ECHO_NEG_BREAK_TABLE_SIZE fixed bin init (126), 91 FALSE bit (1) init ("0"b), 92 TRUE bit (1) init ("1"b), 93 MAX_SEND_MSG_SIZE fixed bin (21) init (255), 94 ZERO_IPS_MASK bit (36) init ((36)"0"b), 95 EXIT_THRESHOLD fixed bin init (5) 96 ) internal static options (constant); 97 98 /* ------------------------ EXTERNALS ------------------------------------ */ 99 100 dcl ( 101 error_table_$action_not_performed, 102 error_table_$undefined_order_request, 103 error_table_$unimplemented_version 104 ) fixed bin (35) external static; 105 106 /* ------------------------ ENTRIES -------------------------------------- */ 107 108 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 109 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 110 dcl ipc_$mask_ev_calls entry (fixed bin(35)); 111 dcl ipc_$unmask_ev_calls entry (fixed bin(35)); 112 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 113 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 114 dcl ws_tty_mgr_$have_wsterm entry (ptr, fixed bin, fixed bin (35)) returns (bit (1)); 115 dcl ws_tty_mgr_$ok_iocb entry (ptr, ptr, ptr, fixed bin (35)) returns (bit (1)); 116 dcl ws_tty_mgr_$send_message entry (ptr, char (3), bit (9), ptr, fixed bin (21)); 117 dcl ws_tty_mgr_$get_message entry (ptr, ptr, fixed bin (21), fixed bin (21), char (3)); 118 dcl ws_trace_ entry () options (variable); 119 120 /* ------------------------ BUILTINS and CONDITIONS ---------------------- */ 121 122 dcl (addr, bit, byte, fixed, hbound, length, null, rtrim, substr) 123 builtin; 124 125 dcl (any_other, cleanup) condition; 126 127 128 /* ------------------------ PROGRAM -------------------------------------- */ 129 130 abort: 131 entry (I_iocb_ptr, I_resetsw, O_tty_state, O_code); 132 133 /* to reset read or write buffers */ 134 135 code = 0; 136 tty_state = 0; 137 138 resetsw = I_resetsw; 139 140 if ws_tty_data$Flags.Trace 141 then call ws_trace_ ("^a$abort entry: iocb_ptr= ^p, resetws= ^i.", ME, I_iocb_ptr, resetsw); 142 143 if ^ws_tty_mgr_$ok_iocb (I_iocb_ptr, iocb_ptr, mowse_io_data_ptr, code) 144 then goto abort_exit; 145 146 call init_ips_mask; 147 148 rw_switch = bit (fixed (resetsw, 2)); 149 150 if substr (rw_switch, 2, 1) 151 then mowse_io_data.ws.flags.more_input = FALSE; 152 153 call iox_$control (iocb_ptr, "abort", addr (rw_switch), code); 154 if code ^= 0 155 then goto abort_exit; 156 157 call ws_tty_mgr_$send_message (iocb_ptr, WS_ABORT, WS_FLAG_NONE, null, 0); 158 159 abort_exit: 160 if ws_tty_data$Flags.Trace 161 then call ws_trace_ ("^a$abort exit: tty_state= ^i, code= ^i.^/", ME, tty_state, code); 162 O_tty_state = tty_state; 163 O_code = code; 164 return; 165 166 attach: 167 entry (I_iocb_ptr, I_name, I_event, O_tty_state, O_code); 168 169 /* notify wsterm to go to sync mode */ 170 /* notify mowse_io_ that sync mode in effect */ 171 172 /* initialize */ 173 code = 0; 174 tty_state = 0; 175 176 /* get params */ 177 name = I_name; 178 event = I_event; 179 180 if ws_tty_data$Flags.Trace 181 then call ws_trace_ ("^a$attach entry: name= ^a, event= ^i, iocb_ptr= ^p.", ME, name, event, I_iocb_ptr); 182 183 /* get iocb_ptr and check it */ 184 if ^ws_tty_mgr_$ok_iocb (I_iocb_ptr, iocb_ptr, mowse_io_data_ptr, code) 185 then goto attach_exit; 186 187 /* set up ips mask */ 188 call init_ips_mask; 189 190 /* see if wsterm still around */ 191 if ^ws_tty_mgr_$have_wsterm (iocb_ptr, tty_state, code) 192 then goto attach_exit; 193 194 /* tell ws to enter sync mode */ 195 call ws_tty_mgr_$send_message (iocb_ptr, WS_ENTER_SYNC_MODE, WS_FLAG_NONE, null, 0); 196 197 /* get ws's response */ 198 string = " "; 199 string_ptr = addr (string); 200 get_msg_id = " "; 201 call ws_tty_mgr_$get_message (iocb_ptr, string_ptr, MAX_SEND_MSG_SIZE, string_size, get_msg_id); 202 203 if ws_tty_data$Flags.Trace 204 then call ws_trace_ ("^a$attach: enter sync mode reply= ^a.", ME, get_msg_id); 205 206 if get_msg_id ^= WS_SYNC_MODE_ENTERED 207 then do; 208 code = error_table_$action_not_performed; 209 goto attach_exit; 210 end; 211 212 /* tell mowse too */ 213 video_mode_info.version = mowse_io_info_version_1; 214 video_mode_info.mode = TRUE; 215 video_mode_info.mbz = "0"b; 216 mowse_io_set_video_mode_info_ptr = addr (video_mode_info); 217 call iox_$control (iocb_ptr, "set_video_mode", mowse_io_set_video_mode_info_ptr, code); 218 if code ^= 0 219 then goto attach_exit; 220 call iox_$modes (iocb_ptr, "force,^crecho,^lfecho", "", code); 221 222 attach_exit: 223 if ws_tty_data$Flags.Trace 224 then call ws_trace_ ("^a$attach exit: tty_state= ^i, code= ^i.^/", ME, tty_state, code); 225 O_tty_state = tty_state; 226 O_code = code; 227 return; 228 229 detach: 230 entry (I_iocb_ptr, I_dflag, O_tty_state, O_code); 231 232 /* notify wsterm to return to async mode */ 233 /* notify mowse_io_ of return to async mode (TBD) */ 234 /* dflag is ignored */ 235 236 /* initialize */ 237 code = 0; 238 tty_state = 0; 239 num_exit_tries = 0; 240 241 /* get params */ 242 dflag = I_dflag; 243 244 if ws_tty_data$Flags.Trace 245 then call ws_trace_ ("^a$detach entry: iocb_ptr= ^p, dflag= ^i.", ME, I_iocb_ptr, dflag); 246 247 /* get iocb_ptr and check it */ 248 if ^ws_tty_mgr_$ok_iocb (I_iocb_ptr, iocb_ptr, mowse_io_data_ptr, code) 249 then goto detach_exit; 250 251 /* see if wsterm still around */ 252 if ^ws_tty_mgr_$have_wsterm (iocb_ptr, tty_state, code) 253 then goto detach_exit; 254 255 /* flush input */ 256 call iox_$control (iocb_ptr, "resetread", null (), code); 257 if code ^= 0 258 then goto detach_exit; 259 260 /* tell ws to exit sync mode */ 261 call ws_tty_mgr_$send_message (iocb_ptr, WS_EXIT_SYNC_MODE, WS_FLAG_NONE, null, 0); 262 263 /* get ws's response */ 264 string = " "; 265 string_ptr = addr (string); 266 get_msg_id = " "; 267 268 do while ((get_msg_id ^= WS_SYNC_MODE_EXITED) & (num_exit_tries < EXIT_THRESHOLD)); 269 call ws_tty_mgr_$get_message (iocb_ptr, string_ptr, 256, string_size, get_msg_id); 270 num_exit_tries = num_exit_tries + 1; 271 end; 272 273 if ws_tty_data$Flags.Trace 274 then call ws_trace_ ("^a$detach: sync mode reply= ^a.", ME, get_msg_id); 275 276 if get_msg_id ^= WS_SYNC_MODE_EXITED 277 then do; 278 code = error_table_$action_not_performed; 279 goto detach_exit; 280 end; 281 282 /* tell mowse too */ 283 video_mode_info.version = mowse_io_info_version_1; 284 video_mode_info.mode = FALSE; 285 video_mode_info.mbz = "0"b; 286 mowse_io_set_video_mode_info_ptr = addr (video_mode_info); 287 call iox_$control (iocb_ptr, "set_video_mode", mowse_io_set_video_mode_info_ptr, code); 288 289 detach_exit: 290 if ws_tty_data$Flags.Trace 291 then call ws_trace_ ("^a$detach exit: tty_state= ^i, code= ^i.^/", ME, tty_state, code); 292 O_tty_state = tty_state; 293 O_code = code; 294 return; 295 296 event: 297 entry (I_iocb_ptr, I_event, O_tty_state, O_code); 298 299 /* to change tty events signaled */ 300 301 code = 0; 302 tty_state = 0; 303 304 event = I_event; 305 306 if ws_tty_data$Flags.Trace 307 then call ws_trace_ ("^a$event entry: iocb_ptr= ^p, event= ^i.", ME, I_iocb_ptr, event); 308 309 if ^ws_tty_mgr_$ok_iocb (I_iocb_ptr, iocb_ptr, mowse_io_data_ptr, code) 310 then goto event_exit; 311 312 event_exit: 313 if ws_tty_data$Flags.Trace 314 then call ws_trace_ ("^a$event exit: tty_state= ^i, code= ^i.^/", ME, O_tty_state, code); 315 O_tty_state = tty_state; 316 O_code = code; 317 return; 318 319 index: 320 entry (I_iocb_ptr, I_name, O_tty_state, O_code); 321 322 /* go get index from name, and sign onto tty */ 323 324 code = 0; 325 tty_state = 0; 326 327 name = I_name; 328 329 if ws_tty_data$Flags.Trace 330 then call ws_trace_ ("^a$index entry: name= ^a, iocb_ptr= ^p.", ME, name, I_iocb_ptr); 331 332 if ^ws_tty_mgr_$ok_iocb (I_iocb_ptr, iocb_ptr, mowse_io_data_ptr, code) 333 then goto index_exit; 334 335 if iocb_ptr -> iocb.version ^= iox_$iocb_version_sentinel 336 /* only here to make visable to probe */ 337 then do; 338 code = error_table_$unimplemented_version; 339 goto attach_exit; 340 end; 341 342 index_exit: 343 if ws_tty_data$Flags.Trace 344 then call ws_trace_ ("^a$index exit: tty_state= ^i, code= ^i.^/", ME, O_tty_state, code); 345 O_tty_state = tty_state; 346 O_code = code; 347 return; 348 349 order: 350 entry (I_iocb_ptr, I_order, I_argptr, O_tty_state, O_code); 351 352 /* to give tty orders */ 353 /* the order may be done here, passed to WSTERM, or passed to mowse_io_ */ 354 /* via iox_ or any combination of these */ 355 356 code = 0; 357 tty_state = 0; 358 359 order = I_order; 360 argptr = I_argptr; 361 362 if ws_tty_data$Flags.Trace 363 then call ws_trace_ ("^a$order entry: iocb_ptr= ^p, order= '^a', argptr= ^p.", ME, I_iocb_ptr, order, argptr); 364 365 if ^ws_tty_mgr_$ok_iocb (I_iocb_ptr, iocb_ptr, mowse_io_data_ptr, code) 366 then goto order_exit; 367 368 call init_ips_mask; 369 370 /* ------------------------ Start of control orders ---------------------- */ 371 372 if order = "abort" /* tty_ */ 373 then goto order_iox; 374 375 else if order = "debug_on" /* mowse_io_ */ 376 then do; 377 mowse_io_debug_info_ptr = argptr; 378 call iox_$control (iocb_ptr, order, mowse_io_debug_info_ptr, code); 379 end; 380 381 else if order = "debug_off" /* mowse_io_ */ 382 then do; 383 mowse_io_debug_info_ptr = argptr; 384 call iox_$control (iocb_ptr, order, mowse_io_debug_info_ptr, code); 385 end; 386 387 else if order = "flush_subchannel" /* mowse */ 388 then call unmask_alarms_and_pass_on_to_mowse; 389 390 else if order = "get_editing_chars" /* tty_ */ 391 then goto order_iox; 392 393 else if order = "get_event_channel" /* tty_ */ 394 then goto order_iox; 395 396 else if order = "get_foreign_terminal_data" /* none */ 397 then do; 398 foreign_terminal_data_ptr = argptr; 399 if foreign_terminal_data.version ^= FOREIGN_TERMINAL_DATA_VERSION_1 400 then goto wrong_version; 401 call iox_$control (iocb_ptr, order, foreign_terminal_data_ptr, code); 402 end; 403 404 else if order = "get_input_conversion" /* no */ 405 then do; 406 goto order_not_defined; 407 end; 408 409 else if order = "get_input_translation" /* no */ 410 then do; 411 goto order_not_defined; 412 end; 413 414 else if order = "get_mowse_info" /* mowse_io_ */ 415 then goto order_iox; 416 417 else if order = "get_output_conversion" /* tty */ 418 then goto order_iox; 419 420 else if order = "get_output_translation" /* no */ 421 then do; 422 goto order_not_defined; 423 end; 424 425 else if order = "get_special" /* none */ 426 then goto order_iox; 427 428 else if order = "get_terminal_emulator_state" /* mowse_io_ */ 429 then do; 430 mowse_io_terminal_state_ptr = argptr; 431 if mowse_io_terminal_state.version ^= mowse_io_info_version_1 432 then goto wrong_version; 433 call iox_$control (iocb_ptr, order, mowse_io_terminal_state_ptr, code); 434 end; 435 436 else if order = "line_length" /* mowse */ 437 then goto order_iox; 438 439 else if order = "modes" /* WSTERM via mowse */ 440 then do; 441 new_modes = "force," || rtrim (modes_info.mode_string); 442 call iox_$modes (iocb_ptr, new_modes, "" /*old_modes*/, code); 443 end; 444 445 else if order = "printer_off" /* ws_tty_ */ 446 then do; 447 call ws_tty_mgr_$send_message (iocb_ptr, WS_PRINTER_OFF, WS_FLAG_NONE, null, 0); 448 end; 449 450 else if order = "printer_on" /* ws_tty_ */ 451 then do; 452 call ws_tty_mgr_$send_message (iocb_ptr, WS_PRINTER_ON, WS_FLAG_NONE, null, 0); 453 end; 454 455 else if order = "put_to_sleep" /* mowse_io_ */ 456 then goto order_iox; 457 458 else if order = "quit_disable" /* mowse */ 459 then goto order_iox; 460 461 else if order = "quit_enable" /* mowse */ 462 then goto order_iox; 463 464 else if order = "read_status" /* tty_ */ 465 then goto order_iox; 466 467 else if order = "resetread" /* tty_ */ 468 then do; 469 mowse_io_data.ws.flags.more_input = FALSE; 470 goto order_iox; 471 end; 472 473 else if order = "resetwrite" /* tty_ */ 474 then goto order_iox; 475 476 else if order = "send_local_message" /* mowse_io_ */ 477 then goto order_iox; 478 479 else if order = "send_message" /* mowse_io_ */ 480 then goto order_iox; 481 482 else if order = "set_echo_break_table" /* tty */ 483 then do; 484 echo_neg_datap = argptr; 485 if echo_neg_data.version = echo_neg_data_version_2 486 then do; 487 break_table_ptr = addr (echo_neg_data.break); 488 break_table_size = ECHO_NEG_BREAK_TABLE_SIZE; 489 end; 490 else if echo_neg_data.version = echo_neg_data_version_1 491 then do; 492 break_table_ptr = addr (v1_echo_neg_data.break); 493 break_table_size = V1_ECHO_NEG_BREAK_TABLE_SIZE; 494 end; 495 else goto wrong_version; 496 call convert_break_table (break_table_ptr, break_table_size, string, string_size); 497 string_ptr = addr (string); 498 call ws_tty_mgr_$send_message (iocb_ptr, WS_SET_BREAK_TABLE, WS_FLAG_NONE, string_ptr, string_size); 499 call iox_$control (iocb_ptr, order, argptr, code); 500 end; 501 502 else if order = "set_editing_chars" /* tty_ */ 503 then goto order_iox; 504 505 else if order = "set_input_conversion" /* no */ 506 then do; 507 goto order_not_defined; 508 end; 509 510 else if order = "set_input_translation" /* none */ 511 then do; 512 goto order_not_defined; 513 end; 514 515 else if order = "set_output_conversion" /* tty */ 516 then do; 517 if argptr -> cv_trans_struc.version > CV_TRANS_VERSION 518 then goto wrong_version; 519 call iox_$control (iocb_ptr, order, argptr, code); 520 end; 521 522 else if order = "set_output_translation" /* none */ 523 then do; 524 goto order_not_defined; 525 end; 526 527 else if order = "set_special" /* tty_ */ 528 then goto order_iox; 529 530 else if order = "set_terminal_data" /* tty_ */ 531 then do; /* set ll and pl */ 532 ttdp = argptr; 533 if terminal_type_data.version ^= ttd_version_3 534 then goto wrong_version; 535 call iox_$control (iocb_ptr, order, argptr, code); 536 end; 537 538 else if order = "set_term_type" /* tty_ */ 539 then goto order_iox; 540 541 else if order = "start" /* tty_ */ 542 then goto order_iox; 543 544 else if order = "store_id" /* tty_ */ 545 then goto order_iox; 546 547 else if order = "store_mowse_info" /* mowse_io_ */ 548 then goto order_iox; 549 550 else if order = "terminal_info" /* tty_ */ 551 then do; 552 terminal_info_ptr = argptr; 553 if terminal_info.version ^= terminal_info_version 554 then goto wrong_version; 555 call iox_$control (iocb_ptr, order, terminal_info_ptr, code); 556 end; 557 558 else if order = "trace_on" /* mowse_io_ */ 559 then do; 560 mowse_io_debug_info_ptr = argptr; 561 call iox_$control (iocb_ptr, order, mowse_io_debug_info_ptr, code); 562 end; 563 564 else if order = "trace_off" /* mowse_io_ */ 565 then do; 566 mowse_io_debug_info_ptr = argptr; 567 call iox_$control (iocb_ptr, order, mowse_io_debug_info_ptr, code); 568 end; 569 570 else if order = "write_status" /* tty_ */ 571 then goto order_iox; 572 573 /* ------------------------ End of control orders ------------------------ */ 574 575 /**** none of the above, try something else */ 576 577 else if ws_tty_data$Flags.Trace 578 then call ws_trace_ ("^a$order: Unknown control order, '^a'.", ME, order); 579 580 /**** send it on to iox_$control AS IS */ 581 582 order_iox: 583 call iox_$control (iocb_ptr, order, argptr, code); 584 goto order_exit; 585 586 /**** send it on to wsterm */ 587 588 order_wsterm: 589 string_ptr = addr (order); 590 string_size = length (order); 591 592 call ws_tty_mgr_$send_message (iocb_ptr, WS_ORDER, WS_FLAG_NONE, string_ptr, string_size); 593 goto order_exit; 594 595 /**** exits */ 596 order_not_defined: 597 code = error_table_$undefined_order_request; 598 goto order_exit; 599 600 wrong_version: 601 code = error_table_$unimplemented_version; 602 goto order_exit; 603 604 order_not_performed: 605 code = error_table_$action_not_performed; 606 607 order_exit: 608 if ws_tty_data$Flags.Trace 609 then call ws_trace_ ("^a$order exit: tty_state= ^i, code= ^i.^/", ME, tty_state, code); 610 O_tty_state = tty_state; 611 O_code = code; 612 return; 613 614 /* ------------------------ END PROGRAM ---------------------------------- */ 615 616 /* ------------------------ INTERNAL PROCEDURES -------------------------- */ 617 618 convert_break_table: 619 proc (table_ptr, table_size, output_string, string_count); 620 621 dcl table_ptr ptr parm; 622 dcl table_size fixed bin parm; 623 dcl output_string char (*) parm; 624 dcl string_count fixed bin (21) parm; 625 626 dcl table (0:ECHO_NEG_BREAK_TABLE_SIZE) bit (1) unaligned based (table_ptr); 627 dcl index fixed bin; 628 dcl FIRST_PRINT_CHAR_INDEX fixed bin int static options (constant) init (32); 629 630 output_string = ""; 631 string_count = 0; 632 633 do index = FIRST_PRINT_CHAR_INDEX to table_size; /* ignore control chars */ 634 if table (index) 635 then do; 636 string_count = string_count + 1; 637 substr (output_string, string_count, 1) = byte (index); 638 end; 639 end; 640 return; 641 end convert_break_table; 642 643 /* ------------------------------------------------------------------------- */ 644 645 init_ips_mask: 646 proc (); 647 648 dcl create_ips_mask_ entry (ptr, fixed bin, bit (36) aligned); 649 dcl IPS_ARRAY (1) char (32) aligned int static options (constant) init ("-all"); 650 dcl mask bit (36) aligned; 651 652 if mowse_io_data.ws.ips_mask = ZERO_IPS_MASK /* if mask is zero then... */ 653 then do; 654 655 /**** call returns mask that DISABLES (=0) interrupts listed in IPS_ARRAY ... */ 656 call create_ips_mask_ (addr (IPS_ARRAY), hbound (IPS_ARRAY, 1), mask); 657 658 /**** ... save the inverse to ENABLE (=1) the listed interrupts. */ 659 mowse_io_data.ws.ips_mask = ^mask; 660 end; 661 662 return; 663 end init_ips_mask; 664 665 /* ------------------------------------------------------------------------- */ 666 667 unmask_alarms_and_pass_on_to_mowse: 668 proc (); 669 670 671 /**** START CRITICAL SECTION ****/ 672 event_code = 0; 673 unmask_count = 0; 674 saved_mask = ZERO_IPS_MASK; 675 on cleanup call cleanup_handler; 676 on any_other call any_other_handler; 677 call hcs_$set_ips_mask (mowse_io_data.ws.ips_mask, saved_mask); 678 do while (event_code = 0); 679 call ipc_$unmask_ev_calls (event_code); 680 unmask_count = unmask_count +1; 681 end; 682 683 call iox_$control (iocb_ptr, order, argptr, code); 684 685 if saved_mask_bit.control 686 then call hcs_$reset_ips_mask (saved_mask, saved_mask); 687 do count = 2 to unmask_count; 688 call ipc_$mask_ev_calls (0); end; 689 revert any_other, cleanup; 690 /**** END CRITICAL SECTION ****/ 691 692 return; 693 end unmask_alarms_and_pass_on_to_mowse; 694 695 /* ------------------------------------------------------------------------- */ 696 697 any_other_handler: 698 proc; 699 700 dcl continue_to_signal_ entry (fixed bin (35)); 701 702 if ws_tty_data$Flags.Trace 703 then call ws_trace_ (" ^a$any_other_handler :saved_mask=^o.", ME, saved_mask); 704 705 if saved_mask_bit.control 706 then call hcs_$reset_ips_mask (saved_mask, saved_mask); 707 do count = 2 to unmask_count; 708 call ipc_$mask_ev_calls (0); 709 end; 710 711 call continue_to_signal_ ((0)); 712 713 return; 714 end any_other_handler; 715 716 /* ------------------------------------------------------------------------- */ 717 718 cleanup_handler: 719 proc; 720 721 if ws_tty_data$Flags.Trace 722 then call ws_trace_ (" ^a$cleanup_handler :saved_mask=^o.", ME, saved_mask); 723 724 if saved_mask_bit.control 725 then call hcs_$reset_ips_mask (saved_mask, saved_mask); 726 do count = 2 to unmask_count; 727 call ipc_$mask_ev_calls (0); 728 end; 729 730 return; 731 end cleanup_handler; 732 733 /* ------------------------ INCLUDES ------------------------------------- */ 734 1 1 /* BEGIN INCLUDE FILE ws_control_ids */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-06-05,RBarstad), approve(86-12-11,MCR7585), 1 5* audit(87-01-28,Gilcrease), install(87-08-07,MR12.1-1075): 1 6* ws_tty_ <-> WSTERM message control ids 1 7* 2) change(87-01-15,RBarstad), approve(87-01-15,MCR7585), 1 8* audit(87-01-28,Gilcrease), install(87-08-07,MR12.1-1075): 1 9* added control message flags 1 10* END HISTORY COMMENTS */ 1 11 1 12 /* message control ids */ 1 13 dcl ( 1 14 WS_ABORT init ("ABT"), 1 15 WS_ENTER_SYNC_MODE init ("ESM"), 1 16 WS_SYNC_MODE_ENTERED init ("SME"), 1 17 WS_EXIT_SYNC_MODE init ("XSM"), 1 18 WS_SYNC_MODE_EXITED init ("SMX"), 1 19 WS_END_ECHOED_INPUT init ("EEI"), 1 20 WS_END_NON_ECHOED_INPUT init ("ENI"), 1 21 WS_READ_WITH_NO_ECHO init ("RNE"), 1 22 WS_READ_WITH_ECHO init ("RWE"), 1 23 WS_SET_BREAK_TABLE init ("SBT"), 1 24 WS_SET_TTY_MODES init ("STM"), 1 25 WS_ECHOED_INPUT_CHARS init ("EIC"), 1 26 WS_UNECHOED_INPUT_CHARS init ("UIC"), 1 27 WS_PRINTER_ON init ("PON"), 1 28 WS_PRINTER_OFF init ("POF"), 1 29 WS_DISPLAY_TEXT init ("DTX"), 1 30 WS_ORDER init ("ORD") 1 31 ) char (3) internal static options (constant); 1 32 1 33 /* control message flags */ 1 34 dcl ( 1 35 WS_FLAG_NONE init ("000000000"b), 1 36 WS_FLAG_NO_BLOCK init ("010000000"b) /* don't block on read */ 1 37 ) bit (9) internal static options (constant); 1 38 1 39 /* END INCLUDE FILE ws_control_ids */ 735 736 2 1 /* BEGIN INCLUDE FILE ws_tty_data */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-12-05,RBarstad), approve(86-12-11,MCR7585), 2 5* audit(86-12-12,Gilcrease), install(87-08-07,MR12.1-1075): 2 6* ws_tty_ external static 2 7* END HISTORY COMMENTS */ 2 8 2 9 dcl 1 ws_tty_data$Flags aligned external static, 2 10 3 Debug bit (1) unaligned, 2 11 3 Trace bit (1) unaligned, 2 12 3 Pad bit (34) unaligned; 2 13 2 14 /* END INCLUDE FILE ws_tty_data */ 737 738 3 1 /* BEGIN INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-06-15,Flegel), approve(86-12-16,MCR7580), 3 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 6* Created for control support for mowse_io_. 3 7* 2) change(86-08-01,Flegel), approve(86-12-16,MCR7580), 3 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 9* Changed version fields to char (8) and 3 10* installed version constant. 3 11* 3) change(86-10-08,Flegel), approve(86-12-16,MCR7580), 3 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 13* Added flush_subchannel_info structure. 3 14* 4) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 3 15* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 16* Approved. 3 17* 5) change(86-12-05,Flegel), approve(86-12-05,MCR7580), 3 18* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 19* Added mowse_io_set_video_mode_info structure. 3 20* 6) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 3 21* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 3 22* Changes to support async call channels. 3 23* END HISTORY COMMENTS */ 3 24 3 25 /* : Version number */ 3 26 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 3 27 dcl mowse_io_info_version_1 3 28 char (8) int static options (constant) 3 29 init ("miover_1"); 3 30 3 31 /* : Mowse store info structure */ 3 32 dcl mowse_io_store_info_ptr 3 33 ptr; 3 34 dcl 01 mowse_io_store_info based (mowse_io_store_info_ptr), 3 35 02 version char (8), 3 36 02 info_ptr ptr; /* Pointer to mowse_info_ structure */ 3 37 3 38 /* : Mowse info structure */ 3 39 dcl mowse_io_info_ptr ptr; 3 40 dcl 01 mowse_io_info based (mowse_io_info_ptr), 3 41 02 version char (8), 3 42 02 mcb_ptr ptr, /* Pointer to mowse_mcb */ 3 43 02 info_ptr ptr; /* Pointer to Mowse information (CATs etc.) */ 3 44 3 45 /* : Control info overlay for debug_on */ 3 46 dcl mowse_io_debug_info_ptr 3 47 ptr; 3 48 dcl 01 mowse_io_debug_info based (mowse_io_debug_info_ptr), 3 49 02 version char (8), 3 50 02 segment_name char (512) var; /* Debug file name */ 3 51 3 52 /* : Control info overlay for get_terminal_emulator_state */ 3 53 dcl mowse_io_terminal_state_ptr 3 54 ptr; 3 55 dcl 01 mowse_io_terminal_state 3 56 based (mowse_io_terminal_state_ptr), 3 57 02 version char (8), 3 58 02 state bit (1) unal, /* WSTERM state */ 3 59 02 mbz bit (35) unal; 3 60 3 61 /* : Control info overlay for send_message and send_local_message */ 3 62 dcl mowse_io_message_ptr ptr; 3 63 dcl 01 mowse_io_message based (mowse_io_message_ptr), 3 64 02 version char (8), 3 65 02 channel fixed bin, /* Channel of message */ 3 66 02 io_message_ptr ptr, /* Pointer to the nonvarying message */ 3 67 02 io_message_len fixed bin (21); /* Length of message */ 3 68 3 69 /* : Control info overlay for put_to_sleep */ 3 70 dcl mowse_io_sleep_info_ptr 3 71 ptr; 3 72 dcl 01 mowse_io_sleep_info based (mowse_io_sleep_info_ptr), 3 73 02 version char (8), 3 74 02 major_index fixed bin, /* CAT index of sleeper */ 3 75 02 sleep_seconds fixed bin; /* Sleep interval */ 3 76 3 77 /* : Control info for flush_subchannel */ 3 78 dcl mowse_io_flush_subchannel_info_ptr 3 79 ptr; 3 80 dcl 01 mowse_io_flush_subchannel_info 3 81 based (mowse_io_flush_subchannel_info_ptr), 3 82 02 version char (8), 3 83 02 subchannel fixed bin; /* The subchannel to be flushed (BG/FG) */ 3 84 3 85 /* : Control info to set the video mode */ 3 86 dcl mowse_io_set_video_mode_info_ptr 3 87 ptr; 3 88 dcl 01 mowse_io_set_video_mode_info 3 89 based (mowse_io_set_video_mode_info_ptr), 3 90 02 version char (8), 3 91 02 mode bit (1) unal, /* On or off */ 3 92 02 mbz bit (35) unal; 3 93 3 94 /* END INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 739 740 4 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 4 2 4 3 /* Created 5/25/77 by J. Stern */ 4 4 4 5 4 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 4 7 2 version fixed bin, /* version number of this sturcture */ 4 8 2 id char (4) unaligned, /* terminal id from answerback */ 4 9 2 term_type char (32) unaligned, /* terminal type name */ 4 10 2 line_type fixed bin, /* line type number */ 4 11 2 baud_rate fixed bin, 4 12 2 reserved (4) fixed bin; /* reserved for future use */ 4 13 4 14 4 15 dcl terminal_info_ptr ptr; 4 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 4 17 4 18 4 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 741 742 5 1 /* BEGIN INCLUDE FiLE ... terminal_type_data.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(77-05-19,JStern), approve(), audit(), install(): 5 6* Created 5 7* Modified 8/14/79 by Robert Coren to convert to version 2 by adding 5 8* flow control parameters 5 9* 2) change(87-03-09,LJAdams), approve(87-04-03,MCR7646), 5 10* audit(87-05-05,Gilcrease), install(87-08-04,MR12.1-1056): 5 11* Change the ttd_version to ttd_version_3. Add the protocol field. 5 12* END HISTORY COMMENTS */ 5 13 5 14 5 15 dcl 1 terminal_type_data aligned based (ttdp), /* info structure for set_terminal_data order */ 5 16 2 version fixed bin, /* structure version */ 5 17 2 old_type fixed bin, /* old terminal type number, -1 => none */ 5 18 2 name char (32) unaligned, /* terminal type name */ 5 19 2 tables, 5 20 3 input_tr_ptr ptr, /* input translation table ptr */ 5 21 3 output_tr_ptr ptr, /* output translation table ptr */ 5 22 3 input_cv_ptr ptr, /* input conversion table ptr */ 5 23 3 output_cv_ptr ptr, /* output conversion table ptr */ 5 24 3 special_ptr ptr, /* special chars table ptr */ 5 25 3 delay_ptr ptr, /* delay table ptr */ 5 26 2 editing_chars unaligned, 5 27 3 erase char (1) unaligned, 5 28 3 kill char (1) unaligned, 5 29 2 framing_chars unaligned, 5 30 3 frame_begin char (1) unaligned, 5 31 3 frame_end char (1) unaligned, 5 32 2 flags unal, 5 33 3 keyboard_locking bit (1), /* ON to request keyboard locking and unlocking */ 5 34 3 input_timeout bit (1), 5 35 3 output_block_acknowledge bit (1), 5 36 3 mbz bit (15), 5 37 2 line_delimiter char (1) unal, 5 38 2 mbz bit (9) unal, 5 39 5 40 /* the remainder of this structure is only present if version is 2 or more */ 5 41 5 42 2 flow_control_chars unal, 5 43 3 input_suspend char (1), 5 44 3 input_resume char (1), 5 45 3 output_suspend_etb char (1), 5 46 3 output_resume_ack char (1), 5 47 2 output_buffer_size fixed bin, 5 48 5 49 /* the remainder of this structure is only present if version is 3 or more */ 5 50 2 protocol fixed bin; /* 0=NONE; 1=MOWSE */ 5 51 5 52 5 53 dcl ttdp ptr; /* ptr to terminal_type_data structure */ 5 54 dcl ttd_version_3 fixed bin int static options (constant) init (3); 5 55 /* current version of structure */ 5 56 5 57 5 58 /* END INCLUDE FILE ... terminal_type_data.incl.pl1 */ 743 744 6 1 /* Begin include file foreign_terminal.incl.pl1 */ 6 2 6 3 dcl foreign_terminal_data_ptr ptr; 6 4 dcl FOREIGN_TERMINAL_DATA_VERSION_1 char (8) aligned static options (constant) init ("ftd_1"); 6 5 dcl 1 foreign_terminal_data aligned based (foreign_terminal_data_ptr), 6 6 2 version char (8), /* (Input) version of this structure */ 6 7 2 area_ptr ptr, /* (Input) area in which to allocate modes */ 6 8 2 mode_string_info_ptr ptr; /* (Output) points to allocate mode_string_info */ 6 9 /* End of version 1 data */ 6 10 6 11 /* End include file foreign_terminal.incl.pl1 */ 745 746 7 1 /* BEGIN INCLUDE FILE mcs_echo_neg.incl.pl1 Bernard Greenberg 1/20/79 */ 7 2 7 3 7 4 7 5 /****^ HISTORY COMMENTS: 7 6* 1) change(86-04-23,Coren), approve(86-04-23,MCR7300), 7 7* audit(86-05-19,Beattie), install(86-07-08,MR12.0-1089): 7 8* Changed version to 2, increased size of break table, 7 9* included named constant for break table size. 7 10* END HISTORY COMMENTS */ 7 11 7 12 7 13 /* This include file defines the callable entrypoints and argument data 7 14* structures for ring 0 echo negotiation */ 7 15 7 16 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 7 17 dcl echo_neg_datap ptr; 7 18 dcl echo_neg_data_version_2 fixed bin static options (constant) init (2); 7 19 dcl ECHO_NEG_BREAK_TABLE_SIZE 7 20 fixed bin internal static options (constant) init (255); 7 21 7 22 dcl 1 echo_neg_data based (echo_neg_datap) aligned, 7 23 /* Echo negotiation data */ 7 24 2 version fixed bin, 7 25 2 break (0:255) bit (1) unaligned, 7 26 /* Break table, 1 = break */ 7 27 2 pad bit (7) unaligned, 7 28 2 rubout_trigger_chars (2) unaligned, /* Characters that cause rubout action */ 7 29 3 char char (1) unaligned, 7 30 2 rubout_sequence_length 7 31 fixed bin (4) unsigned unaligned, 7 32 /* Length of rubout sequence, output */ 7 33 2 rubout_pad_count fixed bin (4) unsigned unaligned, 7 34 /* Count of pads needed */ 7 35 2 buffer_rubouts bit (1) unaligned, /* 1 = put rubouts and rubbed out in buffer */ 7 36 2 rubout_sequence char (12) unaligned; /* Actual rubout sequence */ 7 37 7 38 /*** VERSION 1 STRUCTURE DECLARATION FOR COMPATIBILITY (TO BE REMOVED FOR MR12) ***/ 7 39 7 40 dcl echo_neg_data_version_1 fixed bin static options (constant) init (1); 7 41 7 42 dcl 1 v1_echo_neg_data based (echo_neg_datap) aligned, 7 43 /* Echo negotiation data */ 7 44 2 version fixed bin, 7 45 2 break (0:127) bit (1) unaligned, 7 46 /* Break table, 1 = break */ 7 47 2 pad bit (7) unaligned, 7 48 2 rubout_trigger_chars (2) unaligned, /* Characters that cause rubout action */ 7 49 3 char char (1) unaligned, 7 50 2 rubout_sequence_length 7 51 fixed bin (4) unsigned unaligned, 7 52 /* Length of rubout sequence, output */ 7 53 2 rubout_pad_count fixed bin (4) unsigned unaligned, 7 54 /* Count of pads needed */ 7 55 2 buffer_rubouts bit (1) unaligned, /* 1 = put rubouts and rubbed out in buffer */ 7 56 2 rubout_sequence char (12) unaligned; /* Actual rubout sequence */ 7 57 /*** END VERSION 1 STRUCTURE ****/ 7 58 7 59 dcl ( 7 60 hcs_$tty_read_echoed, 7 61 hcs_$echo_negotiate_get_chars 7 62 ) entry (fixed bin, ptr, fixed bin (21), fixed bin (21), fixed bin (21), fixed bin (21), 7 63 fixed bin, fixed bin, fixed bin (35)); 7 64 /* 7 65* call hcs_$echo_negotiate_get_chars 7 66* (devx, datap, offset, nelem, NRETURNED, NECHOED_RETURNED, screen_left, STATE, CODE); 7 67* */ 7 68 7 69 /* END INCLUDE FILE mcs_echo_neg.incl.pl1 */ 747 748 8 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 8 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 8 3* version number to IOX2. */ 8 4 /* format: style2 */ 8 5 8 6 dcl 1 iocb aligned based, /* I/O control block. */ 8 7 2 version character (4) aligned, /* IOX2 */ 8 8 2 name char (32), /* I/O name of this block. */ 8 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 8 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 8 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 8 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 8 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 8 14 2 reserved bit (72), /* Reserved for future use. */ 8 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 8 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 8 17 /* open(p,mode,not_used,s) */ 8 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 8 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 8 20 /* get_line(p,bufptr,buflen,actlen,s) */ 8 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 8 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 8 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 8 24 /* put_chars(p,bufptr,buflen,s) */ 8 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 8 26 /* modes(p,newmode,oldmode,s) */ 8 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 8 28 /* position(p,u1,u2,s) */ 8 29 2 control entry (ptr, char (*), ptr, fixed (35)), 8 30 /* control(p,order,infptr,s) */ 8 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 8 32 /* read_record(p,bufptr,buflen,actlen,s) */ 8 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 8 34 /* write_record(p,bufptr,buflen,s) */ 8 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 8 36 /* rewrite_record(p,bufptr,buflen,s) */ 8 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 8 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 8 39 /* seek_key(p,key,len,s) */ 8 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 8 41 /* read_key(p,key,len,s) */ 8 42 2 read_length entry (ptr, fixed (21), fixed (35)), 8 43 /* read_length(p,len,s) */ 8 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 8 45 /* open_file(p,mode,desc,not_used,s) */ 8 46 2 close_file entry (ptr, char (*), fixed bin (35)), 8 47 /* close_file(p,desc,s) */ 8 48 2 detach entry (ptr, char (*), fixed bin (35)); 8 49 /* detach(p,desc,s) */ 8 50 8 51 declare iox_$iocb_version_sentinel 8 52 character (4) aligned external static; 8 53 8 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 749 750 9 1 /* BEGIN INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 9 2 9 3 /****^ HISTORY COMMENTS: 9 4* 1) change(87-04-16,Flegel), approve(87-07-15,MCR7580), 9 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 9 6* Created. 9 7* 2) change(87-06-23,Flegel), approve(87-06-23,MCR7649), 9 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 9 9* Converted to support the use of event channels. 9 10* 3) change(88-10-06,Flegel), approve(88-11-16,MCR8023), audit(88-12-12,Lee), 9 11* install(89-01-24,MR12.3-1012): 9 12* phx21215 - Added mowse_io_data.channel_info.foreground to use to generate 9 13* events when something happens in the foreground. 9 14* END HISTORY COMMENTS */ 9 15 9 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 9 17 dcl mowse_io_data_ptr ptr; 9 18 dcl 01 mowse_io_data based (mowse_io_data_ptr), 9 19 02 open_descrip char (19) var, 9 20 02 iocb_ptr ptr aligned, /* mowse_tty iocb pointer */ 9 21 02 default_iocb_ptr ptr aligned, /* mowse_i/o iocb pointer */ 9 22 02 attach_descrip char (256) var, /* Attach description */ 9 23 02 old_modes char (256) unal, /* Modes on previous iocb */ 9 24 9 25 02 current_modes char (256) unal, /* Current mode settings */ 9 26 02 WSTERM_modes (11) char (1), /* Encoded modes for WSTERM */ 9 27 02 cv_trans_struc_ptr ptr, /* Conversion table pointer */ 9 28 9 29 02 info_ptr ptr, /* Application control info seg */ 9 30 02 mcb_ptr ptr, /* Internal MCB to MOWSE */ 9 31 02 sleepers ptr, /* Queue of sleeping applications */ 9 32 02 dozers fixed bin (35), /* Number of unhandled sleeper wakeups */ 9 33 9 34 02 ws, /* Vidoe system control */ 9 35 03 flags, 9 36 04 trace bit (1) unal, 9 37 04 debug bit (1) unal, 9 38 04 mark_set bit (1) unal, 9 39 04 video_mode bit (1) unal, /* State (on/off) of video */ 9 40 04 more_input bit (1) unal, /* Last read unfinished */ 9 41 04 pad bit (31) unal, 9 42 03 read_count fixed bin (17), /* count of unfinished read commands sent */ 9 43 03 ips_mask bit (36) aligned, 9 44 9 45 02 sus_data, /* sus_ information */ 9 46 03 sus_entry ptr, /* Saved sus_ signal handler */ 9 47 03 activated bit (1) unal, /* If sus_ has been signaled */ 9 48 03 pad bit (35) unal, 9 49 9 50 02 channel_info, /* Event channel info */ 9 51 03 process_id bit (36) aligned, /* This process */ 9 52 03 wake_info, 9 53 04 wake_map (0:127) bit (1) unal, /* Break chars */ 9 54 04 pad bit (16) unal, 9 55 03 user_input like wait_info, /* Input wait channel */ 9 56 03 packet_transmitter like wait_info, /* Write events */ 9 57 03 packet_receiver, /* hcs_ events */ 9 58 04 channel fixed bin (71), /* Channel id */ 9 59 03 packet_dispatcher, /* Dispatch channels */ 9 60 04 sync_channel fixed bin (71), /* Process when quiet */ 9 61 04 async_channel fixed bin (71), /* Process NOW! */ 9 62 03 foreground, /* MF - phx21215 - read/write_status, get_event_channel info */ 9 63 04 channel fixed bin (71), /* Event channel */ 9 64 9 65 02 debug_iocb_ptr ptr, /* Debug file IOCB */ 9 66 02 trace_iocb_ptr ptr, /* Trace file IOCB */ 9 67 9 68 02 timer_info (8), 9 69 03 wakeup fixed bin (71), /* Seconds from last in queue */ 9 70 03 timer_id fixed bin, /* Who owns this wakeup */ 9 71 9 72 02 switches, /* Control switches */ 9 73 03 quit_enable bit (1) unal, /* Quit processing state */ 9 74 03 reset_write bit (1) unal, /* resetwrite requested */ 9 75 03 disconnect_active bit (1) unal, /* Disconnection occuring */ 9 76 03 rs_pending (2) bit (1) unal, /* Reset occuring */ 9 77 03 ds_pending (2) bit (1) unal, /* Disconnect occuring */ 9 78 03 br_pending bit (1) unal, /* Break occurring */ 9 79 03 brk_pending bit (1) unal, /* Break occuring (quit) */ 9 80 03 info_stored bit (1) unal, /* Info segment stored */ 9 81 03 connect_active bit (1) unal, /* Connection in progress */ 9 82 03 start_issued bit (1) unal, /* Indicates start order pending */ 9 83 03 pad bit (24) unal, 9 84 9 85 02 task, 9 86 03 active (0:2) bit (1) unal, /* Tasks which are active */ 9 87 03 pad bit (33) unal, 9 88 9 89 02 user_input, /* User_i/o input data */ 9 90 03 in fixed bin (21), /* Next free slot in repository */ 9 91 03 out fixed bin (21), /* Head of data */ 9 92 03 queue (0:4095) char (1), /* Repository */ 9 93 9 94 02 l_dat (0:1), /* Local data message queue */ 9 95 03 in_ptr ptr, /* Incoming messages */ 9 96 03 out_ptr ptr, /* Outgoing messages */ 9 97 9 98 02 r, /* Receiver data */ 9 99 03 eop char (1), /* End of packet character */ 9 100 03 sop char (1), /* Start of packet character */ 9 101 03 esc (0:2) char (1), /* 3 escape characters */ 9 102 03 esc_count fixed bin, /* Number of escaped chars in received packet */ 9 103 03 asn (0:1) fixed bin (3), /* Acknowledge sequence number */ 9 104 03 dat (0:1, 0:3) char (124) var, /* Data queues */ 9 105 03 pkt (0:2) char (129) var, /* Packet queue */ 9 106 03 pktin fixed bin, /* Next packet character in */ 9 107 03 pktout fixed bin, /* Head of packet */ 9 108 03 psn (0:1) fixed bin, /* SN for each channel */ 9 109 03 esckey bit (9) unal, /* Decoding 2nd character escape */ 9 110 03 ignoring (0:1) bit (1) unal, /* Ignore data during synchronization */ 9 111 03 pad bit (25) unal, 9 112 9 113 02 s, /* Sender data */ 9 114 03 eop char (1), /* End of packet character */ 9 115 03 sop char (1), /* Start of packet character */ 9 116 03 esc (0:2) char (1), /* 3 escape characters */ 9 117 03 dat (0:1, 0:3) char (124) var, /* Data queue */ 9 118 03 psn (0:1) fixed bin (3), /* Packet sequence number */ 9 119 03 lasn (0:1) fixed bin (3), /* Last ack sent */ 9 120 03 nasn (0:1) fixed bin (3), /* Next ack to be sent */ 9 121 03 escreq (0:255) bit (1) unal, /* Characters to be escaped */ 9 122 03 pad bit (32) unal; 9 123 9 124 /* Wait channel control struncture */ 9 125 9 126 dcl 01 wait_info based, 9 127 02 channel fixed bin (71) aligned, /* Channel ID */ 9 128 02 count fixed bin, /* Waiting count */ 9 129 02 flags, 9 130 03 transmitted bit (1) unal, /* Wakeup already generated */ 9 131 03 pad bit (35) unal; 9 132 9 133 /* END INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 751 752 10 1 /* BEGIN INCLUDE FILE ... tty_convert.incl.pl1 */ 10 2 10 3 /* tty_ conversion tables */ 10 4 /* Created 11/3/75 by Robert S. Coren */ 10 5 /* Info structures added 5/19/77 by Robert S. Coren */ 10 6 /* Length of cv_trans changed from 128 to 256 05/03/78 by Robert Coren */ 10 7 /* conversion table mnemonics added JRDavis 21 Aug 80 */ 10 8 /* fix special_chars_struc to have good refers Fri 13 Feb 81 JRDavis */ 10 9 10 10 10 11 /****^ HISTORY COMMENTS: 10 12* 1) change(85-12-01,Negaret), approve(87-07-23,MCR7742), 10 13* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1056): 10 14* Added INPUT_CONVERT_DSA_CR_PROCESSING constant. 10 15* 2) change(88-01-22,Brunelle), approve(88-01-22,MCR7813), 10 16* audit(88-10-05,Blair), install(88-10-17,MR12.2-1171): 10 17* Expand c_chars definition from 3 chars to 15. Change SPECIAL_VERSION 10 18* from 1 to 2. Add version variable to get_special_info_struc and define 10 19* SPECIAL_INFO_STRUCT_VERSION_1. 10 20* END HISTORY COMMENTS */ 10 21 10 22 10 23 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 10 24 10 25 10 26 dcl 1 special_chars aligned based, /* table of special character sequences */ 10 27 2 nl_seq aligned like c_chars, /* new-line sequence */ 10 28 2 cr_seq aligned like c_chars, /* carriage-return sequence */ 10 29 2 bs_seq aligned like c_chars, /* backspace sequence */ 10 30 2 tab_seq aligned like c_chars, /* horizontal tab sequence */ 10 31 2 vt_seq aligned like c_chars, /* vertical tab sequence */ 10 32 2 ff_seq aligned like c_chars, /* form-feed sequence */ 10 33 2 printer_on aligned like c_chars, /* printer-on sequence */ 10 34 2 printer_off aligned like c_chars, /* printer_off sequence */ 10 35 2 red_ribbon_shift aligned like c_chars, /* red ribbon shift sequence */ 10 36 2 black_ribbon_shift aligned like c_chars, /* black ribbon shift sequence */ 10 37 2 end_of_page aligned like c_chars, /* end-of-page warning sequence */ 10 38 2 escape_length fixed bin, /* number of escape sequences */ 10 39 2 not_edited_escapes (sc_escape_len refer (special_chars.escape_length)) like c_chars, 10 40 /* use in ^edited mode */ 10 41 2 edited_escapes (sc_escape_len refer (special_chars.escape_length)) like c_chars, 10 42 /* use in edited mode */ 10 43 2 input_escapes aligned, 10 44 3 len fixed bin (8) unaligned, /* length of string */ 10 45 3 str char (sc_input_escape_len refer (special_chars.input_escapes.len)) unaligned, 10 46 /* escape sequence characters */ 10 47 2 input_results aligned, 10 48 3 pad bit (9) unaligned, /* so that strings will look the same */ 10 49 3 str char (sc_input_escape_len refer (special_chars.input_escapes.len)) unaligned; 10 50 /* results of escape sequences */ 10 51 10 52 10 53 dcl c_chars_ptr ptr; 10 54 dcl 1 c_chars based (c_chars_ptr) aligned, 10 55 2 count fixed bin (8) unaligned, 10 56 2 chars (15) char (1) unaligned; 10 57 10 58 dcl sc_escape_len fixed bin; /* count of output escapes to allocate in special_chars */ 10 59 dcl sc_input_escape_len fixed bin; /* count of input escapes to allocate in special_chars */ 10 60 10 61 10 62 dcl 1 cv_trans based aligned, /* conversion/translation table format */ 10 63 2 value (0:255) fixed bin (8) unal; 10 64 10 65 10 66 dcl 1 delay based aligned, /* delay counts for output */ 10 67 2 vert_nl fixed bin, 10 68 2 horz_nl float bin, 10 69 2 const_tab fixed bin, 10 70 2 var_tab float bin, 10 71 2 backspace fixed bin, 10 72 2 vt_ff fixed bin; 10 73 10 74 /* info structures used with orders */ 10 75 10 76 dcl 1 special_chars_struc aligned based, 10 77 2 version fixed bin, 10 78 2 default fixed bin, /* non-zero indicates use default */ 10 79 2 special_chars, /* same as level-1 above */ 10 80 /* has to be spelled out instead of using like */ 10 81 /* because of refer options */ 10 82 3 nl_seq aligned like c_chars, /* new-line sequence */ 10 83 3 cr_seq aligned like c_chars, /* carriage-return sequence */ 10 84 3 bs_seq aligned like c_chars, /* backspace sequence */ 10 85 3 tab_seq aligned like c_chars, /* horizontal tab sequence */ 10 86 3 vt_seq aligned like c_chars, /* vertical tab sequence */ 10 87 3 ff_seq aligned like c_chars, /* form-feed sequence */ 10 88 3 printer_on aligned like c_chars, /* printer-on sequence */ 10 89 3 printer_off aligned like c_chars, /* printer_off sequence */ 10 90 3 red_ribbon_shift aligned like c_chars, /* red ribbon shift sequence */ 10 91 3 black_ribbon_shift aligned like c_chars, /* black ribbon shift sequence */ 10 92 3 end_of_page aligned like c_chars, /* end-of-page warning sequence */ 10 93 3 escape_length fixed bin, /* number of escape sequences */ 10 94 3 not_edited_escapes (sc_escape_len refer (special_chars_struc.escape_length)) like c_chars, 10 95 /* use in ^edited mode */ 10 96 3 edited_escapes (sc_escape_len refer (special_chars_struc.escape_length)) like c_chars, 10 97 /* use in edited mode */ 10 98 3 input_escapes aligned, 10 99 4 len fixed bin (8) unaligned, /* length of string */ 10 100 4 str char (sc_input_escape_len refer (special_chars_struc.input_escapes.len)) unaligned, 10 101 /* escape sequence characters */ 10 102 3 input_results aligned, 10 103 4 pad bit (9) unaligned, /* so that strings will look the same */ 10 104 4 str char (sc_input_escape_len refer (special_chars_struc.input_escapes.len)) unaligned; 10 105 /* results of escape sequences */ 10 106 10 107 dcl 1 cv_trans_struc aligned based, /* all conversion/translation tables */ 10 108 2 version fixed bin, 10 109 2 default fixed bin, /* as above */ 10 110 2 cv_trans like cv_trans; 10 111 10 112 dcl 1 delay_struc aligned based, 10 113 2 version fixed bin, 10 114 2 default fixed bin, /* as above */ 10 115 2 delay like delay; 10 116 10 117 dcl 1 get_special_info_struc based aligned, /* get_special order */ 10 118 2 version char (8), 10 119 2 area_ptr pointer, 10 120 2 table_ptr pointer; 10 121 10 122 dcl SPECIAL_INFO_STRUCT_VERSION_1 10 123 char (8) int static options (constant) init ("sisv1000"); 10 124 dcl SPECIAL_VERSION fixed bin int static options (constant) init (1); 10 125 dcl SPECIAL_VERSION_2 fixed bin int static options (constant) init (2); 10 126 dcl DELAY_VERSION fixed bin int static options (constant) init (1); 10 127 dcl CV_TRANS_VERSION fixed bin int static options (constant) init (2); 10 128 10 129 dcl CV_TRANS_SIZE (2) fixed bin int static options (constant) init (127, 255); 10 130 /* indexed by version number */ 10 131 10 132 10 133 /* values for input and output conversion tables */ 10 134 10 135 dcl ( 10 136 INPUT_CONVERT_ORDINARY init (0), 10 137 INPUT_CONVERT_BREAK init (1), 10 138 INPUT_CONVERT_ESCAPE init (2), 10 139 INPUT_CONVERT_DISCARD init (3), 10 140 INPUT_CONVERT_FORMFEED init (4), 10 141 INPUT_CONVERT_PRECEDENCE_DISCARD 10 142 init (5), 10 143 INPUT_CONVERT_DSA_CR_PROCESSING 10 144 init (6) 10 145 ) fixed bin (8) unaligned internal static options (constant); 10 146 10 147 dcl ( 10 148 OUTPUT_CONVERT_ORDINARY init (0), 10 149 OUTPUT_CONVERT_NEWLINE init (1), 10 150 OUTPUT_CONVERT_CR init (2), 10 151 OUTPUT_CONVERT_HT init (3), 10 152 OUTPUT_CONVERT_BS init (4), 10 153 OUTPUT_CONVERT_VT init (5), 10 154 OUTPUT_CONVERT_FF init (6), 10 155 OUTPUT_CONVERT_OCTAL init (7), 10 156 OUTPUT_CONVERT_RRS init (8), 10 157 OUTPUT_CONVERT_BRS init (9), 10 158 OUTPUT_CONVERT_NO_MOTION init (10), 10 159 OUTPUT_CONVERT_PRECEDENCE_NO_MOTION 10 160 init (11), 10 161 OUTPUT_CONVERT_DONT_SEND init (12), 10 162 OUTPUT_CONVERT_NOT_USED_13 10 163 init (13), 10 164 OUTPUT_CONVERT_NOT_USED_14 10 165 init (14), 10 166 OUTPUT_CONVERT_NOT_USED_15 10 167 init (15), 10 168 OUTPUT_CONVERT_NOT_USED_16 10 169 init (16), 10 170 OUTPUT_CONVERT_FIRST_SPECIAL 10 171 init (17) 10 172 ) fixed bin (8) unaligned internal static options (constant); 10 173 10 174 /* END INCLUDE FILE ... tty_convert.incl.pl1 */ 753 754 755 end ws_tty_main_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/24/89 0847.4 ws_tty_main_.pl1 >spec>install>MR12.3-1012>ws_tty_main_.pl1 735 1 08/10/87 1335.8 ws_control_ids.incl.pl1 >ldd>include>ws_control_ids.incl.pl1 737 2 08/10/87 1335.8 ws_tty_data.incl.pl1 >ldd>include>ws_tty_data.incl.pl1 739 3 08/10/87 1336.7 mowse_io_control_info.incl.pl1 >ldd>include>mowse_io_control_info.incl.pl1 741 4 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 743 5 08/06/87 0913.5 terminal_type_data.incl.pl1 >ldd>include>terminal_type_data.incl.pl1 745 6 03/29/82 1006.8 foreign_terminal_data.incl.pl1 >ldd>include>foreign_terminal_data.incl.pl1 747 7 07/10/86 2015.0 mcs_echo_neg.incl.pl1 >ldd>include>mcs_echo_neg.incl.pl1 749 8 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 751 9 01/24/89 0847.4 mowse_io_data.incl.pl1 >spec>install>MR12.3-1012>mowse_io_data.incl.pl1 753 10 10/18/88 1210.6 tty_convert.incl.pl1 >ldd>include>tty_convert.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. CV_TRANS_VERSION constant fixed bin(17,0) initial dcl 10-127 ref 517 ECHO_NEG_BREAK_TABLE_SIZE constant fixed bin(17,0) initial dcl 7-19 ref 488 EXIT_THRESHOLD constant fixed bin(17,0) initial dcl 88 ref 268 FALSE constant bit(1) initial packed unaligned dcl 88 ref 150 284 469 FIRST_PRINT_CHAR_INDEX constant fixed bin(17,0) initial dcl 628 ref 633 FOREIGN_TERMINAL_DATA_VERSION_1 000010 constant char(8) initial dcl 6-4 ref 399 IPS_ARRAY 000000 constant char(32) initial array dcl 649 set ref 656 656 656 656 I_argptr parameter pointer dcl 38 ref 349 360 I_dflag parameter fixed bin(17,0) dcl 39 ref 229 242 I_event parameter fixed bin(71,0) dcl 40 ref 166 178 296 304 I_iocb_ptr parameter pointer dcl 44 set ref 130 140* 143* 166 180* 184* 229 244* 248* 296 306* 309* 319 329* 332* 349 362* 365* I_name parameter char packed unaligned dcl 41 ref 166 177 319 327 I_order parameter char packed unaligned dcl 42 ref 349 359 I_resetsw parameter fixed bin(17,0) dcl 43 ref 130 138 MAX_SEND_MSG_SIZE 000025 constant fixed bin(21,0) initial dcl 88 set ref 75 201* ME 000026 constant char(12) initial packed unaligned dcl 88 set ref 140* 159* 180* 203* 222* 244* 273* 289* 306* 312* 329* 342* 362* 577* 607* 702* 721* O_code parameter fixed bin(35,0) dcl 45 set ref 130 163* 166 226* 229 293* 296 316* 319 346* 349 611* O_tty_state parameter fixed bin(17,0) dcl 46 set ref 130 162* 166 225* 229 292* 296 312* 315* 319 342* 345* 349 610* TRUE constant bit(1) initial packed unaligned dcl 88 ref 214 Trace 0(01) 000044 external static bit(1) level 2 packed packed unaligned dcl 2-9 ref 140 159 180 203 222 244 273 289 306 312 329 342 362 577 607 702 721 V1_ECHO_NEG_BREAK_TABLE_SIZE constant fixed bin(17,0) initial dcl 88 ref 493 WS_ABORT 000024 constant char(3) initial packed unaligned dcl 1-13 set ref 157* WS_ENTER_SYNC_MODE 000023 constant char(3) initial packed unaligned dcl 1-13 set ref 195* WS_EXIT_SYNC_MODE 000021 constant char(3) initial packed unaligned dcl 1-13 set ref 261* WS_FLAG_NONE 000060 constant bit(9) initial packed unaligned dcl 1-34 set ref 157* 195* 261* 447* 452* 498* 592* WS_ORDER 000014 constant char(3) initial packed unaligned dcl 1-13 set ref 592* WS_PRINTER_OFF 000015 constant char(3) initial packed unaligned dcl 1-13 set ref 447* WS_PRINTER_ON 000016 constant char(3) initial packed unaligned dcl 1-13 set ref 452* WS_SET_BREAK_TABLE 000017 constant char(3) initial packed unaligned dcl 1-13 set ref 498* WS_SYNC_MODE_ENTERED 000022 constant char(3) initial packed unaligned dcl 1-13 ref 206 WS_SYNC_MODE_EXITED 000020 constant char(3) initial packed unaligned dcl 1-13 ref 268 276 ZERO_IPS_MASK constant bit(36) initial packed unaligned dcl 88 ref 652 674 addr builtin function dcl 122 ref 153 153 199 216 265 286 487 492 497 588 656 656 685 705 724 any_other 000000 stack reference condition dcl 125 ref 676 689 argptr 000100 automatic pointer dcl 50 set ref 360* 362* 377 383 398 430 441 484 499* 517 519* 532 535* 552 560 566 582* 683* bit builtin function dcl 122 ref 148 break 1 based bit(1) array level 2 in structure "v1_echo_neg_data" packed packed unaligned dcl 7-42 in procedure "ws_tty_main_" set ref 492 break 1 based bit(1) array level 2 in structure "echo_neg_data" packed packed unaligned dcl 7-22 in procedure "ws_tty_main_" set ref 487 break_table_ptr 000102 automatic pointer dcl 51 set ref 487* 492* 496* break_table_size 000104 automatic fixed bin(17,0) dcl 52 set ref 488* 493* 496* byte builtin function dcl 122 ref 637 c_chars based structure level 1 dcl 10-54 cleanup 000000 stack reference condition dcl 125 ref 675 689 code 000105 automatic fixed bin(35,0) dcl 53 set ref 135* 143* 153* 154 159* 163 173* 184* 191* 208* 217* 218 220* 222* 226 237* 248* 252* 256* 257 278* 287* 289* 293 301* 309* 312* 316 324* 332* 338* 342* 346 356* 365* 378* 384* 401* 433* 442* 499* 519* 535* 555* 561* 567* 582* 596* 600* 604* 607* 611 683* continue_to_signal_ 000052 constant entry external dcl 700 ref 711 control 0(35) based bit(1) level 2 packed packed unaligned dcl 69 ref 685 705 724 count 000144 automatic fixed bin(17,0) dcl 67 set ref 687* 707* 726* create_ips_mask_ 000050 constant entry external dcl 648 ref 656 cv_trans based structure level 1 dcl 10-62 cv_trans_struc based structure level 1 dcl 10-107 delay based structure level 1 dcl 10-66 dflag 000106 automatic fixed bin(17,0) dcl 54 set ref 242* 244* echo_neg_data based structure level 1 dcl 7-22 echo_neg_data_version_1 constant fixed bin(17,0) initial dcl 7-40 ref 490 echo_neg_data_version_2 constant fixed bin(17,0) initial dcl 7-18 ref 485 echo_neg_datap 000370 automatic pointer dcl 7-17 set ref 484* 485 487 490 492 error_table_$action_not_performed 000010 external static fixed bin(35,0) dcl 100 ref 208 278 604 error_table_$undefined_order_request 000012 external static fixed bin(35,0) dcl 100 ref 596 error_table_$unimplemented_version 000014 external static fixed bin(35,0) dcl 100 ref 338 600 event 000110 automatic fixed bin(71,0) dcl 55 set ref 178* 180* 304* 306* event_code 000112 automatic fixed bin(35,0) dcl 56 set ref 672* 678 679* fixed builtin function dcl 122 ref 148 flags 327 based structure level 3 packed packed unaligned dcl 9-18 foreign_terminal_data based structure level 1 dcl 6-5 foreign_terminal_data_ptr 000366 automatic pointer dcl 6-3 set ref 398* 399 401* get_msg_id 000113 automatic char(3) packed unaligned dcl 57 set ref 200* 201* 203* 206 266* 268 269* 273* 276 hbound builtin function dcl 122 ref 656 656 hcs_$reset_ips_mask 000020 constant entry external dcl 109 ref 685 705 724 hcs_$set_ips_mask 000016 constant entry external dcl 108 ref 677 index 000416 automatic fixed bin(17,0) dcl 627 set ref 633* 634 637* iocb based structure level 1 dcl 8-6 iocb_ptr 000114 automatic pointer dcl 58 set ref 143* 153* 157* 184* 191* 195* 201* 217* 220* 248* 252* 256* 261* 269* 287* 309* 332* 335 365* 378* 384* 401* 433* 442* 447* 452* 498* 499* 519* 535* 555* 561* 567* 582* 592* 683* iox_$control 000026 constant entry external dcl 112 ref 153 217 256 287 378 384 401 433 499 519 535 555 561 567 582 683 iox_$iocb_version_sentinel 000046 external static char(4) dcl 8-51 ref 335 iox_$modes 000030 constant entry external dcl 113 ref 220 442 ipc_$mask_ev_calls 000022 constant entry external dcl 110 ref 688 708 727 ipc_$unmask_ev_calls 000024 constant entry external dcl 111 ref 679 ips_mask 331 based bit(36) level 3 dcl 9-18 set ref 652 659* 677* length builtin function dcl 122 ref 590 mask 000426 automatic bit(36) dcl 650 set ref 656* 659 mbz 2(01) 000150 automatic bit(35) level 2 packed packed unaligned dcl 76 set ref 215* 285* mode 2 000150 automatic bit(1) level 2 packed packed unaligned dcl 76 set ref 214* 284* mode_string 1 based char(512) level 2 dcl 80 ref 441 modes_info based structure level 1 dcl 80 more_input 327(04) based bit(1) level 4 packed packed unaligned dcl 9-18 set ref 150* 469* mowse_io_data based structure level 1 unaligned dcl 9-18 mowse_io_data_ptr 000372 automatic pointer dcl 9-17 set ref 143* 150 184* 248* 309* 332* 365* 469 652 659 677 mowse_io_debug_info_ptr 000354 automatic pointer dcl 3-46 set ref 377* 378* 383* 384* 560* 561* 566* 567* mowse_io_info_version_1 000012 constant char(8) initial packed unaligned dcl 3-27 ref 213 283 431 mowse_io_set_video_mode_info based structure level 1 packed packed unaligned dcl 3-88 mowse_io_set_video_mode_info_ptr 000360 automatic pointer dcl 3-86 set ref 216* 217* 286* 287* mowse_io_terminal_state based structure level 1 packed packed unaligned dcl 3-55 mowse_io_terminal_state_ptr 000356 automatic pointer dcl 3-53 set ref 430* 431 433* name 000116 automatic char(32) packed unaligned dcl 59 set ref 177* 180* 327* 329* new_modes 000153 automatic char(512) packed unaligned dcl 84 set ref 441* 442* null builtin function dcl 122 ref 157 157 195 195 256 256 261 261 447 447 452 452 num_exit_tries 000126 automatic fixed bin(17,0) dcl 60 set ref 239* 268 270* 270 order 000127 automatic char(32) packed unaligned dcl 61 set ref 359* 362* 372 375 378* 381 384* 387 390 393 396 401* 404 409 414 417 420 425 428 433* 436 439 445 450 455 458 461 464 467 473 476 479 482 499* 502 505 510 515 519* 522 527 530 535* 538 541 544 547 550 555* 558 561* 564 567* 570 577* 582* 588 590 683* output_string parameter char packed unaligned dcl 623 set ref 618 630* 637* resetsw 000137 automatic fixed bin(17,0) dcl 62 set ref 138* 140* 148 rtrim builtin function dcl 122 ref 441 rw_switch 000140 automatic bit(2) dcl 63 set ref 148* 150 153 153 saved_mask 000142 automatic bit(36) dcl 65 set ref 674* 677* 685 685* 685* 702* 705 705* 705* 721* 724 724* 724* saved_mask_bit based structure level 1 dcl 69 string 000150 automatic char packed unaligned dcl 75 set ref 198* 199 264* 265 496* 497 string_count parameter fixed bin(21,0) dcl 624 set ref 618 631* 636* 636 637 string_ptr 000146 automatic pointer dcl 74 set ref 199* 201* 265* 269* 497* 498* 588* 592* string_size 000145 automatic fixed bin(21,0) dcl 73 set ref 201* 269* 496* 498* 590* 592* substr builtin function dcl 122 set ref 150 637* table based bit(1) array packed unaligned dcl 626 ref 634 table_ptr parameter pointer dcl 621 ref 618 634 table_size parameter fixed bin(17,0) dcl 622 ref 618 633 terminal_info based structure level 1 dcl 4-6 terminal_info_ptr 000362 automatic pointer dcl 4-15 set ref 552* 553 555* terminal_info_version constant fixed bin(17,0) initial dcl 4-16 ref 553 terminal_type_data based structure level 1 dcl 5-15 ttd_version_3 constant fixed bin(17,0) initial dcl 5-54 ref 533 ttdp 000364 automatic pointer dcl 5-53 set ref 532* 533 tty_state 000141 automatic fixed bin(17,0) dcl 64 set ref 136* 159* 162 174* 191* 222* 225 238* 252* 289* 292 302* 315 325* 345 357* 607* 610 unmask_count 000143 automatic fixed bin(17,0) dcl 66 set ref 673* 680* 680 687 707 726 v1_echo_neg_data based structure level 1 dcl 7-42 version based fixed bin(17,0) level 2 in structure "terminal_type_data" dcl 5-15 in procedure "ws_tty_main_" ref 533 version based fixed bin(17,0) level 2 in structure "echo_neg_data" dcl 7-22 in procedure "ws_tty_main_" ref 485 490 version based char(8) level 2 in structure "foreign_terminal_data" dcl 6-5 in procedure "ws_tty_main_" ref 399 version based char(4) level 2 in structure "iocb" dcl 8-6 in procedure "ws_tty_main_" ref 335 version 000150 automatic char(8) level 2 in structure "video_mode_info" packed packed unaligned dcl 76 in procedure "ws_tty_main_" set ref 213* 283* version based char(8) level 2 in structure "mowse_io_terminal_state" packed packed unaligned dcl 3-55 in procedure "ws_tty_main_" ref 431 version based fixed bin(17,0) level 2 in structure "terminal_info" dcl 4-6 in procedure "ws_tty_main_" ref 553 version based fixed bin(17,0) level 2 in structure "cv_trans_struc" dcl 10-107 in procedure "ws_tty_main_" ref 517 video_mode_info 000150 automatic structure level 1 packed packed unaligned dcl 76 set ref 216 286 wait_info based structure level 1 unaligned dcl 9-126 ws 327 based structure level 2 unaligned dcl 9-18 ws_trace_ 000042 constant entry external dcl 118 ref 140 159 180 203 222 244 273 289 306 312 329 342 362 577 607 702 721 ws_tty_data$Flags 000044 external static structure level 1 dcl 2-9 ws_tty_mgr_$get_message 000040 constant entry external dcl 117 ref 201 269 ws_tty_mgr_$have_wsterm 000032 constant entry external dcl 114 ref 191 252 ws_tty_mgr_$ok_iocb 000034 constant entry external dcl 115 ref 143 184 248 309 332 365 ws_tty_mgr_$send_message 000036 constant entry external dcl 116 ref 157 195 261 447 452 498 592 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CV_TRANS_SIZE internal static fixed bin(17,0) initial array dcl 10-129 DELAY_VERSION internal static fixed bin(17,0) initial dcl 10-126 INPUT_CONVERT_BREAK internal static fixed bin(8,0) initial packed unaligned dcl 10-135 INPUT_CONVERT_DISCARD internal static fixed bin(8,0) initial packed unaligned dcl 10-135 INPUT_CONVERT_DSA_CR_PROCESSING internal static fixed bin(8,0) initial packed unaligned dcl 10-135 INPUT_CONVERT_ESCAPE internal static fixed bin(8,0) initial packed unaligned dcl 10-135 INPUT_CONVERT_FORMFEED internal static fixed bin(8,0) initial packed unaligned dcl 10-135 INPUT_CONVERT_ORDINARY internal static fixed bin(8,0) initial packed unaligned dcl 10-135 INPUT_CONVERT_PRECEDENCE_DISCARD internal static fixed bin(8,0) initial packed unaligned dcl 10-135 OUTPUT_CONVERT_BRS internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_BS internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_CR internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_DONT_SEND internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_FF internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_FIRST_SPECIAL internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_HT internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_NEWLINE internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_NOT_USED_13 internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_NOT_USED_14 internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_NOT_USED_15 internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_NOT_USED_16 internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_NO_MOTION internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_OCTAL internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_ORDINARY internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_PRECEDENCE_NO_MOTION internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_RRS internal static fixed bin(8,0) initial packed unaligned dcl 10-147 OUTPUT_CONVERT_VT internal static fixed bin(8,0) initial packed unaligned dcl 10-147 SPECIAL_INFO_STRUCT_VERSION_1 internal static char(8) initial packed unaligned dcl 10-122 SPECIAL_VERSION internal static fixed bin(17,0) initial dcl 10-124 SPECIAL_VERSION_2 internal static fixed bin(17,0) initial dcl 10-125 WS_DISPLAY_TEXT internal static char(3) initial packed unaligned dcl 1-13 WS_ECHOED_INPUT_CHARS internal static char(3) initial packed unaligned dcl 1-13 WS_END_ECHOED_INPUT internal static char(3) initial packed unaligned dcl 1-13 WS_END_NON_ECHOED_INPUT internal static char(3) initial packed unaligned dcl 1-13 WS_FLAG_NO_BLOCK internal static bit(9) initial packed unaligned dcl 1-34 WS_READ_WITH_ECHO internal static char(3) initial packed unaligned dcl 1-13 WS_READ_WITH_NO_ECHO internal static char(3) initial packed unaligned dcl 1-13 WS_SET_TTY_MODES internal static char(3) initial packed unaligned dcl 1-13 WS_UNECHOED_INPUT_CHARS internal static char(3) initial packed unaligned dcl 1-13 c_chars_ptr automatic pointer dcl 10-53 delay_struc based structure level 1 dcl 10-112 get_special_info_struc based structure level 1 dcl 10-117 hcs_$echo_negotiate_get_chars 000000 constant entry external dcl 7-59 hcs_$tty_read_echoed 000000 constant entry external dcl 7-59 mowse_io_debug_info based structure level 1 unaligned dcl 3-48 mowse_io_flush_subchannel_info based structure level 1 unaligned dcl 3-80 mowse_io_flush_subchannel_info_ptr automatic pointer dcl 3-78 mowse_io_info based structure level 1 unaligned dcl 3-40 mowse_io_info_ptr automatic pointer dcl 3-39 mowse_io_message based structure level 1 unaligned dcl 3-63 mowse_io_message_ptr automatic pointer dcl 3-62 mowse_io_sleep_info based structure level 1 unaligned dcl 3-72 mowse_io_sleep_info_ptr automatic pointer dcl 3-70 mowse_io_store_info based structure level 1 unaligned dcl 3-34 mowse_io_store_info_ptr automatic pointer dcl 3-32 sc_escape_len automatic fixed bin(17,0) dcl 10-58 sc_input_escape_len automatic fixed bin(17,0) dcl 10-59 special_chars based structure level 1 dcl 10-26 special_chars_struc based structure level 1 dcl 10-76 NAMES DECLARED BY EXPLICIT CONTEXT. abort 000702 constant entry external dcl 130 abort_exit 001070 constant label dcl 159 ref 143 154 any_other_handler 004350 constant entry internal dcl 697 ref 676 attach 001135 constant entry external dcl 166 attach_exit 001503 constant label dcl 222 ref 184 191 209 218 339 cleanup_handler 004460 constant entry internal dcl 718 ref 675 convert_break_table 004062 constant entry internal dcl 618 ref 496 detach 001545 constant entry external dcl 229 detach_exit 002105 constant label dcl 289 ref 248 252 257 279 event 002152 constant entry external dcl 296 event_exit 002252 constant label dcl 312 ref 309 index 002317 constant entry external dcl 319 index_exit 002435 constant label dcl 342 ref 332 init_ips_mask 004133 constant entry internal dcl 645 ref 146 188 368 order 002502 constant entry external dcl 349 order_exit 004022 constant label dcl 607 ref 365 584 593 598 602 order_iox 003736 constant label dcl 582 ref 372 390 393 414 417 425 436 455 458 461 464 470 473 476 479 502 527 538 541 544 547 570 order_not_defined 004007 constant label dcl 596 set ref 406 411 422 507 512 524 order_not_performed 004017 constant label dcl 604 order_wsterm 003763 constant label dcl 588 unmask_alarms_and_pass_on_to_mowse 004164 constant entry internal dcl 667 ref 387 wrong_version 004013 constant label dcl 600 ref 399 431 490 517 533 553 ws_tty_main_ 000666 constant entry external dcl 16 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5114 5170 4563 5124 Length 5662 4563 54 456 330 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ws_tty_main_ 350 external procedure is an external procedure. convert_break_table internal procedure shares stack frame of external procedure ws_tty_main_. init_ips_mask internal procedure shares stack frame of external procedure ws_tty_main_. unmask_alarms_and_pass_on_to_mowse 102 internal procedure enables or reverts conditions. on unit on line 675 96 on unit on unit on line 676 96 on unit any_other_handler internal procedure shares stack frame of on unit on line 676. cleanup_handler internal procedure shares stack frame of on unit on line 675. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ws_tty_main_ 000100 argptr ws_tty_main_ 000102 break_table_ptr ws_tty_main_ 000104 break_table_size ws_tty_main_ 000105 code ws_tty_main_ 000106 dflag ws_tty_main_ 000110 event ws_tty_main_ 000112 event_code ws_tty_main_ 000113 get_msg_id ws_tty_main_ 000114 iocb_ptr ws_tty_main_ 000116 name ws_tty_main_ 000126 num_exit_tries ws_tty_main_ 000127 order ws_tty_main_ 000137 resetsw ws_tty_main_ 000140 rw_switch ws_tty_main_ 000141 tty_state ws_tty_main_ 000142 saved_mask ws_tty_main_ 000143 unmask_count ws_tty_main_ 000144 count ws_tty_main_ 000145 string_size ws_tty_main_ 000146 string_ptr ws_tty_main_ 000150 string ws_tty_main_ 000150 video_mode_info ws_tty_main_ 000153 new_modes ws_tty_main_ 000354 mowse_io_debug_info_ptr ws_tty_main_ 000356 mowse_io_terminal_state_ptr ws_tty_main_ 000360 mowse_io_set_video_mode_info_ptr ws_tty_main_ 000362 terminal_info_ptr ws_tty_main_ 000364 ttdp ws_tty_main_ 000366 foreign_terminal_data_ptr ws_tty_main_ 000370 echo_neg_datap ws_tty_main_ 000372 mowse_io_data_ptr ws_tty_main_ 000416 index convert_break_table 000426 mask init_ips_mask THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this return_mac alloc_auto_adj enable_op shorten_stack ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. continue_to_signal_ create_ips_mask_ hcs_$reset_ips_mask hcs_$set_ips_mask iox_$control iox_$modes ipc_$mask_ev_calls ipc_$unmask_ev_calls ws_trace_ ws_tty_mgr_$get_message ws_tty_mgr_$have_wsterm ws_tty_mgr_$ok_iocb ws_tty_mgr_$send_message THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$undefined_order_request error_table_$unimplemented_version iox_$iocb_version_sentinel ws_tty_data$Flags LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 75 000651 496 000660 16 000665 18 000674 130 000675 135 000715 136 000716 138 000717 140 000722 143 000755 146 001000 148 001001 150 001006 153 001014 154 001044 157 001046 159 001070 162 001123 163 001125 164 001127 166 001130 173 001160 174 001161 177 001162 178 001170 180 001172 184 001231 188 001254 191 001255 195 001275 198 001317 199 001324 200 001326 201 001330 203 001347 206 001376 208 001402 209 001405 213 001406 214 001410 215 001412 216 001414 217 001416 218 001446 220 001450 222 001503 225 001536 226 001540 227 001542 229 001543 237 001560 238 001561 239 001562 242 001563 244 001566 248 001621 252 001644 256 001664 257 001716 261 001720 264 001742 265 001747 266 001751 268 001753 269 001763 270 002004 271 002005 273 002006 276 002035 278 002041 279 002044 283 002045 284 002047 285 002051 286 002053 287 002055 289 002105 292 002140 293 002142 294 002144 296 002145 301 002167 302 002170 304 002171 306 002173 309 002227 312 002252 315 002305 316 002307 317 002311 319 002312 324 002340 325 002341 327 002342 329 002350 332 002403 335 002426 338 002432 339 002434 342 002435 345 002470 346 002472 347 002474 349 002475 356 002523 357 002524 359 002525 360 002533 362 002536 365 002574 368 002617 372 002620 375 002624 377 002630 378 002632 379 002656 381 002657 383 002663 384 002665 385 002711 387 002712 390 002723 393 002727 396 002733 398 002737 399 002741 401 002746 402 002772 404 002773 406 002777 409 003000 411 003004 414 003005 417 003011 420 003015 422 003021 425 003022 428 003026 430 003032 431 003034 433 003041 434 003065 436 003066 439 003072 441 003076 442 003125 443 003153 445 003154 447 003160 448 003202 450 003203 452 003207 453 003231 455 003232 458 003236 461 003242 464 003246 467 003252 469 003256 470 003261 473 003262 476 003266 479 003272 482 003276 484 003302 485 003304 487 003307 488 003312 489 003314 490 003315 492 003317 493 003322 496 003324 497 003350 498 003352 499 003371 500 003415 502 003416 505 003422 507 003426 510 003427 512 003433 515 003434 517 003440 519 003443 520 003467 522 003470 524 003474 527 003475 530 003501 532 003505 533 003507 535 003512 536 003536 538 003537 541 003543 544 003547 547 003553 550 003557 552 003563 553 003565 555 003570 556 003614 558 003615 560 003621 561 003623 562 003647 564 003650 566 003654 567 003656 568 003702 570 003703 577 003707 582 003736 584 003762 588 003763 590 003765 592 003767 593 004006 596 004007 598 004012 600 004013 602 004016 604 004017 607 004022 610 004055 611 004057 612 004061 618 004062 630 004073 631 004100 633 004101 634 004111 636 004120 637 004121 639 004130 640 004132 645 004133 652 004134 656 004137 659 004156 662 004162 667 004163 672 004171 673 004173 674 004174 675 004175 676 004213 677 004231 678 004244 679 004247 680 004256 681 004260 683 004261 685 004305 687 004321 688 004332 688 004342 689 004345 692 004347 697 004350 702 004351 705 004402 707 004417 708 004433 709 004443 711 004447 713 004457 718 004460 721 004461 724 004512 726 004527 727 004543 728 004553 730 004557 ----------------------------------------------------------- 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