COMPILATION LISTING OF SEGMENT tc_io_ Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/17/90 0816.1 mdt Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 8* * * 9* * Copyright (c) 1972 by Massachusetts Institute of * 10* * Technology and Honeywell Information Systems, Inc. * 11* * * 12* *********************************************************** */ 13 14 15 16 /****^ HISTORY COMMENTS: 17* 1) change(86-05-23,LJAdams), approve(86-11-11,MCR7485), 18* audit(86-12-19,Margolin), install(87-01-06,MR12.0-1255): 19* Modified to support MOWSE. 20* 2) change(86-11-26,LJAdams), approve(86-11-26,MCR7584), 21* audit(86-12-19,Margolin), install(87-01-06,MR12.0-1255): 22* Initial DSA coding has been maintained in a non-executable form. 23* 3) change(87-02-17,LJAdams), approve(87-03-19,PBF7584), 24* audit(87-04-24,Gilcrease), install(87-05-14,MR12.1-1030): 25* Incorrect paramaters being passed to dsa_tty_$connect. 26* 4) change(88-09-26,LJAdams), approve(88-09-26,MCR8001), 27* audit(88-10-06,Farley), install(88-10-07,MR12.2-1148): 28* In the reconnection entrypoint attach_data.tc_info_ptr was not being 29* checked for a null value before starting to process. 30* 5) change(90-09-20,Bubric), approve(90-10-01,MCR8211), audit(90-10-01,Itani), 31* install(90-10-17,MR12.4-1044): 32* Have the calls to the routine 'nothing' changed to calls to the routine 33* 'null_entry_'. 34* END HISTORY COMMENTS */ 35 36 37 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 38 tc_io_: 39 procedure; 40 41 42 /* 43* This is an interim implementation of the terminal control level 44* I/O module. Its successor, terminal_io_, will be rather more complete. 45* This program provides the Terminal Management layer of the Video System, 46* translating logical video operations into physical terminal operations. 47* It does not provide any Window Management, so that video operations 48* so that the video environment is not available until another attachment 49* is made atop this one. 50* 51* 52* This program was created by creatively merging JR Davis' vtty_ and the 53* old terminal io module, tty_. 54* 55* vtty_ was written by James Raymond Davis, 56* 57* with the guidance of 58* ** * Steve H.Webber ** * 59* ** * Larry E.Johnson ** * 60* ** * Bernard S.Greenberg ** * 61* 62* * October 1980 63* 64* *************************************************************************** 65* 66* If I have seen further than others ... 67* 68* Benson Ira Margulies, May 22, 1981. 69* 70**/ 71 72 /* Modified 3 April 1984 by Jon A. Rochlis to add the entry for reconnection. 73* 74* Q: So where is terminal_io_? 75* A: That day is not today, at least not at Honeywell. */ 76 /* Modified June 1985 by Roger Negaret to support DSA networks. */ 77 /* Modified Mar 1986 by Cox for new ipc_$create_event_channel call sequence */ 78 79 /* Parameters */ 80 81 dcl Iocbp pointer parameter; 82 dcl Code fixed bin (35) parameter; 83 dcl Com_err_switch bit (1) aligned parameter; 84 dcl Ignore bit (1) aligned parameter; 85 dcl Open_mode fixed bin parameter; 86 dcl Attach_options (*) character (*) varying parameter; 87 88 /* Automatic */ 89 90 dcl dsa_connection_info_ptr ptr; 91 dcl dsa_connection_info_len fixed bin (21); 92 dcl access_class_range (2) bit (72); 93 94 dcl actual_iocbp ptr; /* copy of iocb.actual_ioc_ptr */ 95 dcl device char (32); 96 dcl terminal_type character (32); 97 dcl do_not_block bit (1); 98 dcl i fixed bin; 99 dcl iocbp ptr; /* copy of arg_iocb_ptr */ 100 dcl hangup bit (1); 101 dcl login_channel bit (1); 102 dcl mask bit (36) aligned; /* ips mask */ 103 dcl mowse_terminal_iocbp ptr; 104 dcl phone_no char (32); /* phone to which to dial */ 105 dcl password char (12); 106 dcl password_given bit (1); 107 dcl resource_description character (256); 108 dcl state fixed bin; /* state returned by hcs_$tty_ calls */ 109 110 dcl 1 dma aligned like dial_manager_arg; 111 112 dcl 1 ipcas aligned like ipc_create_arg_structure; 113 114 115 dcl 1 dm_flags aligned, 116 2 dialup bit (1) unal, 117 2 hungup bit (1) unal, 118 2 control bit (1) unal, 119 2 pad bit (33) unal; 120 121 dcl 1 event_message like event_wait_info aligned; 122 dcl error_string char (32); 123 124 /* builtins */ 125 126 dcl (addr, hbound, index, lbound, null, string, substr) 127 builtin; 128 129 /* Constants */ 130 131 dcl ME character (32) internal static options (constant) initial ("tc_io_"); 132 133 dcl MOWSE_DEVICE character (9) internal static options (constant) initial ("mowse_i/o"); 134 135 136 /* Based */ 137 138 dcl system_free_area area based (get_system_free_area_ ()); 139 dcl connection_info (dsa_connection_info_len) fixed bin (35) based (dsa_connection_info_ptr); 140 141 /* External Static */ 142 143 dcl ( 144 error_table_$too_many_args, 145 error_table_$resource_attached, 146 error_table_$action_not_performed, 147 error_table_$inconsistent, 148 error_table_$not_detached, 149 error_table_$badopt, 150 error_table_$bad_mode, 151 error_table_$bad_ptr, 152 error_table_$noarg, 153 error_table_$wrong_no_of_args 154 ) fixed bin (35) ext; 155 156 dcl (any_other, cleanup) condition; 157 158 159 /* Procedures */ 160 161 dcl com_err_ entry options (variable); 162 dcl convert_dial_message_$return_io_module 163 entry (fixed bin (71), char (*), char (*), fixed bin, 1 structure aligned, 164 2 bit (1) unal, 2 bit (1) unal, 2 bit (1) unal, 2 bit (33) unal, fixed bin (35)); 165 dcl ( 166 dial_manager_$dial_out, 167 dial_manager_$privileged_attach, 168 dial_manager_$release_channel, 169 dial_manager_$release_channel_no_hangup, 170 dial_manager_$terminate_dial_out 171 ) entry (ptr, fixed bin (35)); 172 dcl get_system_free_area_ entry () returns (pointer); 173 dcl ioa_$rsnnl entry options (variable); 174 dcl null_entry_ entry (); 175 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 176 dcl ipc_$create_event_channel 177 entry (ptr, fixed bin (71), fixed bin (35)); 178 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 179 dcl hcs_$delete_channel entry (fixed bin (71), fixed bin (35)); 180 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 181 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 182 dcl hcs_$tty_attach entry (char (*), fixed bin (71), fixed bin, fixed bin, fixed bin (35)); 183 dcl hcs_$tty_detach entry (fixed bin, fixed bin, fixed bin, fixed bin (35)); 184 dcl hcs_$tty_event entry (fixed bin, fixed bin (71), fixed bin, fixed bin (35)); 185 dcl hcs_$tty_order entry (fixed bin, character (*), pointer, fixed bin, fixed bin (35)); 186 dcl dsa_tty_$attach entry (char (*), fixed bin (71), fixed bin (35), fixed bin, fixed bin (35)); 187 dcl dsa_tty_$connect entry (char (*), ptr, fixed bin (71), char (*) var, ptr, char (*), fixed bin (35), 188 ptr, fixed bin (21), char (*) var, (2) bit (72), fixed bin (35)); 189 190 dcl dsa_tty_$detach entry (fixed bin (35), fixed bin, fixed bin, fixed bin (35)); 191 dcl dsa_tty_$event entry (fixed bin (35), fixed bin (71), fixed bin, fixed bin (35)); 192 dcl dsa_tty_$order entry (fixed bin (35), character (*), pointer, fixed bin, fixed bin (35)); 193 dcl ws_tty_$event entry (ptr, fixed bin (71), fixed bin, fixed bin (35)); 194 dcl ws_tty_$order entry (ptr, char (*), ptr, fixed bin, fixed bin (35)); 195 dcl ipc_$block entry (ptr, ptr, fixed bin (35)); 196 dcl ( 197 ipc_$mask_ev_calls, 198 ipc_$unmask_ev_calls 199 ) entry (fixed bin (35)); 200 201 dcl user_info_$terminal_data entry (char (*), char (*), char (*), fixed bin, char (*)); 202 203 dcl tc_$init entry (ptr, char (*), fixed bin (71), char (*), bit (1), ptr, fixed bin (35)); 204 dcl tc_$shut entry (pointer); 205 dcl tc_$shut_ttp_info entry (ptr); 206 dcl tc_$tc_io_control entry; 207 208 /* tc_io_attach */ 209 210 /* The name tty_attach is hung on here so that reconnection 211* can be fooled into believing that this is indeed tty_. 212* In the next release, when tc_io_ becomes terminal_io_ and 213* replaces tty_, this will be a useful compatability feature 214* as well. */ 215 216 tc_io_attach: 217 tty_attach: 218 entry (Iocbp, Attach_options, Com_err_switch, Code); 219 220 Code = 0; 221 mask = ""b; 222 iocbp = Iocbp; 223 224 225 if hbound (Attach_options, 1) < 1 226 then call error (error_table_$noarg, "Usage: tc_io_ {device} {-control_args}"); 227 terminal_type, resource_description, device, phone_no, password = ""; 228 password_given = "0"b; 229 login_channel, do_not_block = ""b; 230 hangup = "1"b; 231 attach_data_ptr = null (); 232 on cleanup call clean_up_attach; 233 234 if iocbp -> iocb.attach_descrip_ptr ^= null () 235 then call error (error_table_$not_detached, ""); 236 237 do i = lbound (Attach_options, 1) to hbound (Attach_options, 1); 238 if /* case */ index (Attach_options (i), "-") ^= 1 239 then do; /* channel name */ 240 if device ^= "" 241 then call error (error_table_$wrong_no_of_args, "Multiple devices specified."); 242 device = Attach_options (i); 243 end; 244 245 else if Attach_options (i) = "-login_channel" 246 then login_channel = "1"b; 247 248 else if Attach_options (i) = "-hangup_on_detach" 249 then hangup = "1"b; 250 else if Attach_options (i) = "-no_hangup_on_detach" 251 then hangup = "0"b; 252 253 else if Attach_options (i) = "-terminal_type" | Attach_options (i) = "-ttp" 254 then do; 255 i = i + 1; 256 if terminal_type ^= "" 257 then call error (error_table_$too_many_args, 258 "The -terminal_type control arguments may only be given once."); 259 if i <= hbound (Attach_options, 1) 260 then if index (Attach_options (i), "-") = 1 261 then call error (error_table_$noarg, "Control argument found in place of terminal type."); 262 else terminal_type = Attach_options (i); 263 else call error (error_table_$noarg, "-terminal_type given without a terminal type."); 264 end; 265 266 else if Attach_options (i) = "-resource" | Attach_options (i) = "-rsc" 267 then do; 268 i = i + 1; 269 if resource_description ^= "" 270 then call error (error_table_$too_many_args, "A second resource description was given."); 271 if i <= hbound (Attach_options, 1) 272 then if index (Attach_options (i), "-") = 1 273 then call error (error_table_$noarg, "Control argument found in place of resource description."); 274 else ; 275 else call error (error_table_$noarg, "-resource given without a description."); 276 277 resource_description = Attach_options (i); 278 end; 279 280 else if Attach_options (i) = "-destination" | Attach_options (i) = "-ds" 281 then do; 282 i = i + 1; 283 if phone_no ^= "" 284 then call error (error_table_$too_many_args, "Multiple dial_out destinations given."); 285 if i > hbound (Attach_options, 1) 286 then call error (error_table_$noarg, "Phone number."); 287 phone_no = Attach_options (i); 288 end; 289 290 else if Attach_options (i) = "-password" | Attach_options (i) = "-pwd" | Attach_options (i) = "-pw" 291 then do; 292 i = i + 1; 293 if i > hbound (Attach_options, 1) 294 then call error (error_table_$noarg, "Password."); 295 password = Attach_options (i); 296 password_given = "1"b; 297 end; 298 299 else if Attach_options (i) = "-no_block" 300 then do; 301 do_not_block = "1"b; 302 end; 303 304 else if Attach_options (i) = "-mowse" 305 then do; 306 i = i + 1; 307 if i > hbound (Attach_options, 1) 308 then call error (error_table_$noarg, "-mowse given without a switch name."); 309 call iox_$find_iocb ((Attach_options (i)), mowse_terminal_iocbp, Code); 310 if Code ^= 0 311 then call error (Code, "Invalid switch name."); 312 device = MOWSE_DEVICE; 313 end; 314 315 else call error (error_table_$badopt, (Attach_options (i))); 316 end; 317 318 if login_channel & ((phone_no ^= "") | (password ^= "")) 319 then call error (error_table_$inconsistent, "-login_channel and -destination."); 320 if login_channel & (device ^= "") 321 then call error (error_table_$inconsistent, "-login_channel and an explicit device."); 322 if login_channel & (resource_description ^= "") 323 then call error (error_table_$inconsistent, "-login_channel and -resource."); 324 325 if login_channel 326 then call user_info_$terminal_data ("", "", device, (0), ""); 327 328 if device = "" 329 then call error (error_table_$noarg, "No device given."); 330 331 allocate attach_data set (attach_data_ptr) in (system_free_area); 332 333 attach_data.tc_info_ptr = null (); /* to avoid an over-gravid attach data block the video part hangs off specially */ 334 335 string (attach_data.flags) = ""b; 336 attach_data.device_id = device; 337 if index (attach_data.device_id, MOWSE_DEVICE) = 1 338 then attach_data.mowse_terminal_iocb_ptr = mowse_terminal_iocbp; 339 else attach_data.mowse_terminal_iocb_ptr = null; 340 attach_data.terminal_type = terminal_type; 341 attach_data.device_used = device; /* unless dm_ changes it */ 342 attach_data.resource_desc = resource_description; 343 attach_data.dial_phone = phone_no; 344 attach_data.phone_given = (phone_no ^= ""); 345 attach_data.login_channel = login_channel; 346 attach_data.no_block = do_not_block; 347 attach_data.hangup = hangup; 348 attach_data.operation_hlock = 0; 349 350 351 /* we always try to get the channel with hcs_, to avoid 352* changing the dial_manager_ event channel if we do not 353* have to. All we cound do wrong here is successfully attach 354* a channel with the wrong reservation characteristics etc. 355* we always pass a bogus event channel in until open time. 356**/ 357 358 call attach_common (error_string, Code); 359 if Code ^= 0 360 then call error (Code, error_string); 361 362 attach_common: /* also called at reconnection time */ 363 proc (error_string, Code); 364 365 dcl error_string char (*); 366 dcl Code fixed bin (35); 367 368 call try_hcs_attach (Code); 369 if Code ^= 0 370 then do; 371 372 if attach_data.login_channel 373 then do; 374 error_string = "Cannot attach login channel."; 375 return; 376 end; 377 378 if attach_data.network_type = DSA_NETWORK_TYPE 379 then do; 380 call dsa_tty_$connect (attach_data.device_id, get_system_free_area_ (), 0, attach_data.dial_phone, 381 null (), attach_data.device_used, (0), dsa_connection_info_ptr, dsa_connection_info_len, (""), 382 access_class_range, Code); 383 if Code ^= 0 384 then do; 385 error_string = "Could not connect channel."; 386 return; 387 end; 388 /*** free the connection info */ 389 390 free connection_info; 391 end; 392 393 else if attach_data.network_type = MOWSE_NETWORK_TYPE 394 then do; /* MOWSE */ 395 error_string = "Could not assign channel."; 396 return; 397 end; 398 else do; /* MCS_NETWORK_TYPE */ 399 call try_dial_manager_attach (Code); 400 if Code ^= 0 401 then do; 402 error_string = "Could not assign channel."; 403 return; 404 end; 405 end; 406 407 call try_hcs_attach (Code); 408 if Code ^= 0 409 then do; 410 error_string = "Could not attach channel."; 411 return; 412 end; 413 end; 414 415 416 return; 417 418 end attach_common; 419 420 call make_atd; 421 on any_other call handler; /* should be on */ 422 423 call set_ips_mask; 424 iocbp -> iocb.attach_descrip_ptr = addr (attach_data.attach_descrip); 425 iocbp -> iocb.attach_data_ptr = attach_data_ptr; 426 iocbp -> iocb.detach_iocb = tc_io_detach; 427 iocbp -> iocb.open = tc_io_open; 428 call iox_$propagate (iocbp); 429 revert any_other; 430 call reset_ips_mask; 431 432 RETURN: 433 return; 434 435 make_atd: 436 procedure; /* format: off */ 437 438 call ioa_$rsnnl ( 439 "^a ^[-login_channel^s^;^a^]^[ -mowse^]^[ -resource ^a^;^s^]^[ -destination ^a^;^s^]^[ -password^;^]^[ -no_block^]^[ ^[-no_hangup_on_detach^;-hangup_on_detach^]^]" 440 , attach_data.attach_descrip, (0), 441 ME, 442 attach_data.login_channel, attach_data.device_used, 443 (attach_data.network_type = MOWSE_NETWORK_TYPE), 444 (attach_data.resource_desc ^= ""), attach_data.resource_desc, 445 attach_data.phone_given, attach_data.dial_phone, 446 password_given, 447 attach_data.no_block, 448 ^attach_data.login_channel, 449 ^attach_data.hangup); 450 451 /* format: ^off */ 452 453 end make_atd; 454 455 456 /* Error calls com_err_ if the loud switch is set and goes to the attach return */ 457 458 error: 459 proc (err_code, message); 460 461 dcl err_code fixed bin (35); /* Multics standard error Code */ 462 dcl message char (*); /* Additional error information */ 463 dcl sub_err_ entry () options (variable); 464 465 if Com_err_switch 466 then call com_err_ (err_code, ME, "^a IOCB ^a.", iocbp -> iocb.name, message); 467 else call sub_err_ (err_code, ME, "c" /* continue unless someone handles */, null (), (0), "^a IOCB ^a.", 468 iocbp -> iocb.name, message); 469 Code = err_code; 470 471 call clean_up_attach; 472 goto RETURN; 473 474 end error; 475 476 477 /* This entry detaches the terminal and frees the information about it. It ignores the Code and does 478* the following: 479* 480* 1. The event channel is released. 481* 2. The channel is released if it was attached with dial_manager_. 482* 3. The table space in this dim for the attachment is freed iff the hlock is clear. 483**/ 484 485 tc_io_detach: 486 entry (Iocbp, Code); 487 488 call set_up; /* set no lock, but get actual_iocb_ptr */ 489 490 call hcs_detach; 491 492 call release_channel; /* if we got it with dm_, let it go */ 493 494 on any_other call handler; /* should be on */ 495 call set_ips_mask; 496 actual_iocbp -> iocb.attach_descrip_ptr = null (); 497 actual_iocbp -> iocb.attach_data_ptr = null (); 498 actual_iocbp -> iocb.detach_iocb = iox_$err_not_attached; 499 actual_iocbp -> iocb.open = iox_$err_not_attached; 500 actual_iocbp -> iocb.control = iox_$err_not_attached; 501 call iox_$propagate (actual_iocbp); 502 if attach_data.operation_hlock = 0 /* no outstanding operations */ 503 then free attach_data; 504 else attach_data.async_detach = "1"b; /* warn other incarnations */ 505 revert any_other; /* avoid unneccessary fatal errors */ 506 call reset_ips_mask; 507 508 return; 509 510 511 /* This entry sets the open description and the legal operation entries in 512* the iocb. This so-called I/O module only excepts the control operation. 513* We are an I/O mudule so that 514* (1) we can be reconnected, and 515* (2) find_iocb can find us, 516* (3) pat will display us. 517* 518**/ 519 520 tc_io_open: 521 entry (Iocbp, Open_mode, Ignore, Code); 522 523 call set_up; 524 525 if Open_mode = Stream_input_output /* sure, why not */ 526 then attach_data.open_descrip = iox_modes (Open_mode); 527 else do; 528 Code = error_table_$bad_mode; 529 return; 530 end; 531 532 call open_common ("0"b /* no reconnection */, Code); 533 if Code ^= 0 534 then return; 535 536 open_common: 537 proc (reconnection_flag, Code); 538 539 dcl reconnection_flag bit (1); 540 dcl Code fixed bin (35); 541 542 if attach_data.network_type ^= MOWSE_NETWORK_TYPE 543 then do; 544 call allocate_ev_channel; /* in case user supplied with set_event */ 545 call ipc_$mask_ev_calls (Code); /* do not let user Code run till we are really open */ 546 if Code ^= 0 547 then return; 548 end; 549 550 /* leave it free for tc_ to do an hcs_ tty attach */ 551 552 if attach_data.network_type = DSA_NETWORK_TYPE 553 then /* DSA */ 554 call dsa_tty_$detach (attach_data.tty_handle, (0), (0), Code); 555 else if attach_data.network_type = MOWSE_NETWORK_TYPE 556 then /* MOWSE */ 557 ; /* mowse does not have to detach a switch */ 558 else /* MCS */ 559 call hcs_$tty_detach (attach_data.tty_index, (0), (0), Code); 560 561 if Code ^= 0 562 then do; 563 call ipc_$unmask_ev_calls ((0)); 564 return; 565 end; 566 567 568 call tc_$init (attach_data.tc_info_ptr, attach_data.device_used, attach_data.event_wait.channel_id (1), 569 attach_data.terminal_type, reconnection_flag, attach_data.mowse_terminal_iocb_ptr, Code); 570 if Code ^= 0 571 then do; 572 call ipc_$unmask_ev_calls ((0)); 573 return; 574 end; 575 576 return; 577 578 end open_common; 579 580 581 on any_other call handler; 582 call set_ips_mask; 583 584 actual_iocbp -> iocb.open_descrip_ptr = addr (attach_data.open_descrip); 585 actual_iocbp -> iocb.detach_iocb = iox_$err_not_closed; 586 actual_iocbp -> iocb.open = iox_$err_not_closed; 587 actual_iocbp -> iocb.close = tc_io_close; 588 actual_iocbp -> iocb.control = tc_$tc_io_control; 589 590 call iox_$propagate (actual_iocbp); 591 call reset_ips_mask; 592 revert any_other; 593 call ipc_$unmask_ev_calls ((0)); 594 595 if attach_data.network_type = DSA_NETWORK_TYPE 596 then /* DSA */ 597 call dsa_tty_$order (attach_data.tty_handle, "start", null (), state, (0)); 598 else if attach_data.network_type = MOWSE_NETWORK_TYPE 599 then /* MOWSE */ 600 call ws_tty_$order (attach_data.mowse_terminal_iocb_ptr, "start", null (), state, (0)); 601 else /* MCS */ 602 call hcs_$tty_order (attach_data.tty_index, "start", null (), state, (0)); 603 604 Code = 0; 605 return; 606 607 /* This procedure closes the io switch and returns a zero Code. 608* the terminal is hardcore detached at this point, but dm_ 609* attachment is left for real detachment. This will cause the 610* interface to be reasonable, as another user cannot 611* snarf the "attached" channel 612**/ 613 614 tc_io_close: 615 entry (Iocbp, Code); 616 617 call set_up; 618 619 call tc_$shut (attach_data.tc_info_ptr); 620 621 call close_common (Code); /* also called at reconnection */ 622 623 close_common: 624 proc (Code); 625 626 dcl Code fixed bin (35); 627 628 /* turn off wakeups from the channel */ 629 630 if attach_data.network_type = DSA_NETWORK_TYPE 631 then /* DSA */ 632 call dsa_tty_$event (attach_data.tty_handle, (0), (0), (0)); 633 else if attach_data.network_type = MOWSE_NETWORK_TYPE 634 then /* MOWSE */ 635 call ws_tty_$event (attach_data.mowse_terminal_iocb_ptr, (0), (0), (0)); 636 else /* MCS */ 637 call hcs_$tty_event (attach_data.tty_index, (0), (0), (0)); 638 639 if attach_data.assigned_ev_channel /* fast channel, give back to hardcore */ 640 then call hcs_$delete_channel (attach_data.event_wait.channel_id (1), Code); 641 else if attach_data.created_ev_channel /* we created regular channel */ 642 then call ipc_$delete_ev_chn (attach_data.event_wait.channel_id (1), Code); 643 attach_data.have_ev_channel = ^(attach_data.assigned_ev_channel | attach_data.created_ev_channel); 644 /* if user supplied it sticks */ 645 646 end close_common; 647 648 on any_other call handler; /* should be on */ 649 call set_ips_mask; 650 651 actual_iocbp -> iocb.open_descrip_ptr = null; 652 actual_iocbp -> iocb.detach_iocb = tc_io_detach; 653 actual_iocbp -> iocb.open = tc_io_open; 654 actual_iocbp -> iocb.control = iox_$err_not_open; 655 actual_iocbp -> iocb.modes = iox_$err_not_open; 656 657 call iox_$propagate (actual_iocbp); 658 659 call reset_ips_mask; 660 return; 661 662 /* This is called by the reconnection control order. It re-initializes 663* all terminal specific info and hopefully leaves all else alone. */ 664 665 reconnection: 666 entry (P_attach_data_ptr, Code); 667 668 dcl P_attach_data_ptr ptr; 669 670 attach_data_ptr = P_attach_data_ptr; 671 672 /* close */ 673 if attach_data.tc_info_ptr = null 674 then do; 675 Code = error_table_$bad_ptr; 676 return; 677 end; 678 call tc_$shut_ttp_info (attach_data.tc_info_ptr); 679 call close_common (Code); 680 if Code ^= 0 681 then return; 682 683 /* detach */ 684 call hcs_detach (); 685 call release_channel (); 686 687 /* attach */ 688 call user_info_$terminal_data ("", "", device, (0), ""); 689 attach_data.device_id, attach_data.device_used = device; 690 call attach_common ("", Code); 691 692 /* open */ 693 call open_common ("1"b /* reconnection */, Code); 694 call ipc_$unmask_ev_calls ((0)); 695 return; 696 697 /* This entry allows other parts of terminal_io_ to easily (perish the thought) 698* call up a process termination. */ 699 700 701 terminate_the_process: 702 entry (Code); 703 call terminate_this_process (Code); 704 705 /* This program only needs to mask for the simple operations of filling in 706* the iocb. Any fault taken there is serious enough, and unlikely enough, to 707* warrent process termination. Thus we do not use the utilities that are around 708* for masking ips when an error could occur, or quits must be tolerated. */ 709 710 711 handler: 712 procedure options (non_quick); /* visible in ifd */ 713 714 dcl error_table_$unable_to_do_io 715 fixed (35) ext; 716 if mask ^= ""b 717 then call terminate_this_process (error_table_$unable_to_do_io); 718 end handler; 719 720 721 terminate_this_process: 722 procedure (cd) options (non_quick); 723 724 dcl cd fixed bin (35); 725 dcl terminate_process_ ext entry (char (*), ptr); 726 dcl 1 ti aligned automatic, 727 2 version fixed, 728 2 code fixed (35); 729 730 731 ti.version = 0; 732 ti.code = cd; 733 call terminate_process_ ("fatal_error", addr (ti)); 734 735 end terminate_this_process; 736 737 738 allocate_ev_channel: 739 procedure; /* Assign event channel */ 740 741 if attach_data.have_ev_channel /* user supplied a channel via "set_event" order */ 742 then return; 743 744 745 /*** Try to get a fast channel, first; */ 746 /*** If no success create a wait event channel. */ 747 748 ipcas.version = ipc_create_arg_structure_v1; 749 ipcas.channel_type = FAST_EVENT_CHANNEL_TYPE; 750 ipcas.call_entry = null_entry_; 751 ipcas.call_data_ptr = null (); 752 ipcas.call_priority = 0; 753 call ipc_$create_event_channel (addr (ipcas), attach_data.event_wait.channel_id (1), Code); 754 if Code = 0 755 then attach_data.assigned_ev_channel = "1"b; 756 757 else do; 758 ipcas.channel_type = WAIT_EVENT_CHANNEL_TYPE; 759 call ipc_$create_event_channel (addr (ipcas), attach_data.event_wait.channel_id (1), Code); 760 if Code ^= 0 761 then call error (Code, "Could not create a wait event channel."); 762 end; 763 764 attach_data.have_ev_channel = "1"b; 765 return; 766 767 end allocate_ev_channel; 768 769 770 try_hcs_attach: 771 procedure (Code); 772 773 dcl Code fixed bin (35); 774 775 Code = 0; 776 777 /* The network_type is initialized here. */ 778 /* set no event -- it will be set with tty_event at open time */ 779 780 if substr (device, 1, 4) = "dsa." /* DSA */ 781 then do; 782 attach_data.network_type = DSA_NETWORK_TYPE; 783 call dsa_tty_$attach (attach_data.device_used, 0, attach_data.tty_handle, state, Code); 784 end; 785 786 else if index (device, MOWSE_DEVICE) = 1 787 then do; /* MOWSE */ 788 attach_data.network_type = MOWSE_NETWORK_TYPE; 789 end; 790 791 else do; /* MCS */ 792 attach_data.network_type = MCS_NETWORK_TYPE; 793 call hcs_$tty_attach (attach_data.device_used, 0, attach_data.tty_index, state, Code); 794 end; 795 796 end try_hcs_attach; 797 798 try_dial_manager_attach: 799 procedure (Code); 800 801 dcl Code fixed bin (35); 802 803 Code = 0; 804 call ipc_$create_ev_chn (attach_data.dial_manager_event.channel_id (1), Code); 805 if Code ^= 0 806 then return; 807 dma.version = dial_manager_arg_version_2; 808 dma.dial_channel = attach_data.dial_manager_event.channel_id (1); 809 dma.dial_qualifier = ""; 810 dma.channel_name = attach_data.device_id; 811 if attach_data.phone_given 812 then dma.dial_out_destination = attach_data.dial_phone; 813 else dma.dial_out_destination = ""; 814 dma.reservation_string = resource_description; 815 if attach_data.flags.phone_given 816 then call dial_manager_$dial_out (addr (dma), Code); 817 else call dial_manager_$privileged_attach (addr (dma), Code); 818 819 /* 820* If this is a priv_attach, then if we already have it then everything 821* is fine. If user specified the destination, then we must dial to it. 822**/ 823 824 if (Code = error_table_$resource_attached) & ^attach_data.flags.phone_given 825 then do; 826 /*** must release is still "0"b at this point */ 827 828 Code = 0; /* do not go blocked, as has nothing further to say */ 829 return; 830 end; 831 if Code ^= 0 832 then do; 833 dm_call_failed_: 834 call ipc_$delete_ev_chn (attach_data.dial_manager_event.channel_id (1), (0)); 835 attach_data.flags.must_release = "0"b; /* avoid freeing an ipc channel twice (fatal proc error) */ 836 return; 837 end; 838 attach_data.flags.must_release = "1"b; /* it cant hurt to try */ 839 840 call ipc_$block (addr (attach_data.dial_manager_event), addr (event_message), Code); 841 /* wait for news from initializer */ 842 if Code ^= 0 843 then goto dm_call_failed_; 844 845 call convert_dial_message_$return_io_module (event_message.message, device, (""), (0), dm_flags, Code); 846 if Code ^= 0 847 then go to dm_call_failed_; 848 if ^dm_flags.dialup 849 then do; 850 Code = error_table_$action_not_performed; 851 go to dm_call_failed_; 852 end; 853 854 attach_data.flags.must_release = "1"b; 855 attach_data.device_used = device; /* starnames unstarred here */ 856 return; 857 end try_dial_manager_attach; 858 859 release_channel: 860 procedure; 861 declare Code fixed bin (35); 862 if attach_data.flags.must_release 863 then do; 864 dma.version = dial_manager_arg_version_2; 865 dma.channel_name = attach_data.device_used; 866 dma.dial_channel = attach_data.dial_manager_event.channel_id (1); 867 if attach_data.flags.phone_given 868 then call dial_manager_$terminate_dial_out (addr (dma), Code); 869 870 if ^attach_data.flags.hangup 871 then call dial_manager_$release_channel_no_hangup (addr (dma), Code); 872 call dial_manager_$release_channel (addr (dma), Code); 873 call ipc_$delete_ev_chn (attach_data.dial_manager_event.channel_id (1), Code); 874 attach_data.flags.must_release = "0"b; 875 end; 876 877 end release_channel; 878 879 880 hcs_detach: 881 procedure; 882 883 if attach_data.network_type = DSA_NETWORK_TYPE 884 then /* DSA */ 885 call dsa_tty_$detach (attach_data.tty_handle, 0, (0), (0)); 886 else if attach_data.network_type = MOWSE_NETWORK_TYPE 887 then /* MOWSE */ 888 ; /* mowse has no switch to detach */ 889 else /* MCS */ 890 call hcs_$tty_detach (attach_data.tty_index, 0, (0), (0)); 891 892 end hcs_detach; 893 894 set_up: 895 procedure; 896 897 Code = 0; 898 actual_iocbp = Iocbp -> iocb.actual_iocb_ptr; 899 attach_data_ptr = actual_iocbp -> iocb.attach_data_ptr; 900 mask = ""b; 901 return; 902 903 end set_up; 904 905 clean_up_attach: 906 procedure; 907 908 if attach_data_ptr = null () 909 then return; 910 if attach_data.tty_index > 0 911 then call hcs_detach; 912 if attach_data.must_release 913 then call release_channel; 914 free attach_data; 915 end clean_up_attach; 916 917 set_ips_mask: 918 procedure; 919 if mask = ""b 920 then call hcs_$set_ips_mask (""b, mask); 921 return; 922 reset_ips_mask: 923 entry; 924 if mask ^= ""b 925 then call hcs_$reset_ips_mask (mask, mask); 926 end set_ips_mask; 927 928 /* include files */ 929 1 1 /* BEGIN INCLUDE FILE ... net_event_message.incl.pl1 */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-07-30,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 1 5* install(86-10-09,MR12.0-1181): 1 6* This include file was formerly tty_event_message.incl.pl1. It has been 1 7* updated with different fields and new constants, and renamed to 1 8* net_event_message.incl.pl1 1 9* 2) change(87-04-20,GDixon), approve(87-07-13,MCR7694), 1 10* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 1 11* Add NETWORK_TYPE_VALUES array. 1 12* END HISTORY COMMENTS */ 1 13 1 14 /* describes event message passed with wakeups from the tty DIM */ 1 15 /* Created 5/24/76 by Robert S. Coren */ 1 16 1 17 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 1 18 1 19 dcl net_event_message_arg fixed bin (71); /* For calling IPC */ 1 20 dcl NET_EVENT_MESSAGE_VERSION_1 bit (2) internal static options (constant) init ("10"b); 1 21 1 22 dcl 1 net_event_message aligned based (addr (net_event_message_arg)), 1 23 2 version bit (2) unaligned, /* Currently version 1 */ 1 24 2 reason bit (16) unaligned, /* Additional info about the event */ 1 25 2 pad bit (6) unaligned, /* Must be zero */ 1 26 2 network_type fixed bin (4) unsigned unaligned, 1 27 /* See below for constants */ 1 28 2 type fixed bin (8) unsigned unaligned, 1 29 /* Type of interrupt, see below */ 1 30 2 handle fixed bin (35) aligned;/* Caller's handle (devx for MCS, handle for DSA) */ 1 31 1 32 /* Network type constants */ 1 33 1 34 dcl MCS_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (0); 1 35 dcl DSA_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (1); 1 36 dcl MOWSE_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (2); 1 37 1 38 dcl NETWORK_TYPE_VALUES (0:2) char(8) varying int static options(constant) init( 1 39 "MCS", 1 40 "DSA", 1 41 "MOWSE"); 1 42 1 43 1 44 /* MCS event message type constants */ 1 45 1 46 dcl MAX_MCS_EVENT_MSG_TYPE fixed bin internal static options (constant) init (8); 1 47 1 48 dcl MCS_UNSPECIFIED_MSG fixed bin internal static options (constant) init (0); 1 49 /* used for "start" order, etc. */ 1 50 dcl MCS_DIALUP_MSG fixed bin internal static options (constant) init (1); 1 51 /* dialup */ 1 52 dcl MCS_HANGUP_MSG fixed bin internal static options (constant) init (2); 1 53 /* hangup */ 1 54 dcl MCS_DIALOUT_MSG fixed bin internal static options (constant) init (3); 1 55 /* dialout status returned */ 1 56 dcl MCS_QUIT_MSG fixed bin internal static options (constant) init (4); 1 57 /* quit */ 1 58 dcl MCS_READ_MSG fixed bin internal static options (constant) init (5); 1 59 /* input arrived */ 1 60 dcl MCS_WRITE_MSG fixed bin internal static options (constant) init (6); 1 61 /* output completed */ 1 62 dcl MCS_LINE_STATUS_MSG fixed bin internal static options (constant) init (7); 1 63 /* control tables sent status */ 1 64 dcl MCS_MASKED_MSG fixed bin internal static options (constant) init (8); 1 65 /* channel masked by FNP */ 1 66 1 67 dcl MCS_MSG_TYPE_TO_PNAME (0:8) char (20) internal static options (constant) init ("unspecified", 1 68 /* 0 */ 1 69 "dialup", /* 1 */ 1 70 "hangup", /* 2 */ 1 71 "dialout status", /* 3 */ 1 72 "quit", /* 4 */ 1 73 "read", /* 5 */ 1 74 "write", /* 6 */ 1 75 "line status", /* 7 */ 1 76 "masked"); /* 8 */ 1 77 1 78 /* DSA event message type constants */ 1 79 1 80 dcl MAX_DSA_EVENT_MSG_TYPE fixed bin internal static options (constant) init (19); 1 81 1 82 dcl DSA_UNSPECIFIED_MSG fixed bin (8) uns internal static options (constant) init (0); 1 83 dcl DSA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (1); 1 84 dcl DSA_DATA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (2); 1 85 dcl DSA_DEMAND_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (3); 1 86 dcl DSA_DEMAND_TURN_MSG fixed bin (8) uns internal static options (constant) init (4); 1 87 dcl DSA_DEMAND_TURN_ACK_MSG fixed bin (8) uns internal static options (constant) init (5); 1 88 dcl DSA_PURGE_MSG fixed bin (8) uns internal static options (constant) init (6); 1 89 dcl DSA_RECOVER_MSG fixed bin (8) uns internal static options (constant) init (7); 1 90 dcl DSA_RECOVER_ACK_MSG fixed bin (8) uns internal static options (constant) init (8); 1 91 dcl DSA_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (9); 1 92 dcl DSA_RESUME_MSG fixed bin (8) uns internal static options (constant) init (10); 1 93 dcl DSA_RESUME_ACK_MSG fixed bin (8) uns internal static options (constant) init (11); 1 94 dcl DSA_SUSPEND_MSG fixed bin (8) uns internal static options (constant) init (12); 1 95 dcl DSA_SUSPEND_ACK_MSG fixed bin (8) uns internal static options (constant) init (13); 1 96 dcl DSA_TERM_ABNORMAL_MSG fixed bin (8) uns internal static options (constant) init (14); 1 97 dcl DSA_ESTABLISHMENT_MSG fixed bin (8) uns internal static options (constant) init (15); 1 98 dcl DSA_TERMINATED_MSG fixed bin (8) uns internal static options (constant) init (16); 1 99 dcl DSA_USER_UNASSIGN_MSG fixed bin (8) uns internal static options (constant) init (17); 1 100 dcl DSA_DATA_INPUT_MSG fixed bin (8) uns internal static options (constant) init (18); 1 101 dcl DSA_DATA_OUTPUT_MSG fixed bin (8) uns internal static options (constant) init (19); 1 102 1 103 dcl DSA_MSG_TYPE_TO_PNAME (0:19) char (20) internal static options (constant) init ("unspecified", 1 104 /* 0 */ 1 105 "attention", /* 1 */ 1 106 "data_attention", /* 2 */ 1 107 "demand_release_sru", /* 3 */ 1 108 "demand_turn", /* 4 */ 1 109 "demand_turn_ack", /* 5 */ 1 110 "purge", /* 6 */ 1 111 "recover", /* 7 */ 1 112 "recover_ack", /* 8 */ 1 113 "release_sru", /* 9 */ 1 114 "resume", /* 10 */ 1 115 "resume_ack", /* 11 */ 1 116 "suspend", /* 12 */ 1 117 "suspend_ack", /* 13 */ 1 118 "terminate_abnormal", /* 14 */ 1 119 "establishment", /* 15 */ 1 120 "terminated", /* 16 */ 1 121 "user_unassign", /* 17 */ 1 122 "data input", /* 18 */ 1 123 "data output"); /* 19 */ 1 124 1 125 /* END INCLUDE FILE ... net_event_message.incl.pl1 */ 930 2 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 2 2 2 3 /* Written 05/04/78 by C. D. Tavares */ 2 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 2 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 2 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 2 7 2 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 2 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 2 10 iox_$close entry (pointer, fixed bin (35)), 2 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 2 12 iox_$delete_record entry (pointer, fixed bin (35)), 2 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 2 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 2 15 iox_$err_not_attached entry options (variable), 2 16 iox_$err_not_closed entry options (variable), 2 17 iox_$err_no_operation entry options (variable), 2 18 iox_$err_not_open entry options (variable), 2 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 2 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 2 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 2 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 2 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 2 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 2 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 2 28 iox_$propagate entry (pointer), 2 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 2 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 2 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 2 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 2 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 2 40 2 41 dcl (iox_$user_output, 2 42 iox_$user_input, 2 43 iox_$user_io, 2 44 iox_$error_output) external static pointer; 2 45 2 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 931 3 1 /* Begin include file ..... iox_modes.incl.pl1 */ 3 2 3 3 /* Written by C. D. Tavares, 03/17/75 */ 3 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 3 5 3 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 3 7 ("stream_input", "stream_output", "stream_input_output", 3 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 3 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 3 10 "direct_input", "direct_output", "direct_update"); 3 11 3 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 3 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 3 14 3 15 dcl (Stream_input initial (1), 3 16 Stream_output initial (2), 3 17 Stream_input_output initial (3), 3 18 Sequential_input initial (4), 3 19 Sequential_output initial (5), 3 20 Sequential_input_output initial (6), 3 21 Sequential_update initial (7), 3 22 Keyed_sequential_input initial (8), 3 23 Keyed_sequential_output initial (9), 3 24 Keyed_sequential_update initial (10), 3 25 Direct_input initial (11), 3 26 Direct_output initial (12), 3 27 Direct_update initial (13)) fixed bin int static options (constant); 3 28 3 29 /* End include file ..... iox_modes.incl.pl1 */ 932 933 4 1 /* BEGIN INCLUDE FILE tc_io_attach_data_.incl.pl1 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(86-07-21,LJAdams), approve(86-11-11,MCR7485), 4 6* audit(86-12-16,Margolin), install(87-01-06,MR12.0-1255): 4 7* Added field to hold ptr to MOWSE terminal switch. 4 8* 2) change(86-11-26,LJAdams), approve(86-11-26,MCR7584), 4 9* audit(86-12-16,Margolin), install(87-01-06,MR12.0-1255): 4 10* tty_handle component has been added for DSA. 4 11* END HISTORY COMMENTS */ 4 12 4 13 4 14 /* Written BIM 1981-1-1 */ 4 15 /* Modified DEC 1985 by R. Negaret to add network_type and tty_handle */ 4 16 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 4 17 /* INTERNAL INTERFACE -- SUBJECT TO CHANGE */ 4 18 4 19 dcl attach_data_ptr pointer; 4 20 dcl 1 attach_data aligned based (attach_data_ptr), 4 21 2 tc_info_ptr pointer, /* data block managed by terminal control */ 4 22 2 mowse_terminal_iocb_ptr 4 23 pointer, /* pointer to the MOWSE terminal switch */ 4 24 2 attach_descrip character (128) varying, 4 25 2 open_descrip character (64) varying, 4 26 2 device_id character (32) unaligned,/* given in atd */ 4 27 2 device_used character (32) unaligned,/* aquired by dm_ */ 4 28 2 terminal_type character (32) unaligned, 4 29 2 dial_phone character (64) varying, 4 30 2 resource_desc character (256) unaligned, 4 31 2 network_type fixed bin, 4 32 2 tty_index fixed bin, 4 33 2 tty_handle fixed bin (35), 4 34 2 operation_hlock fixed bin, /* if this is nonzero detach may not free this structure */ 4 35 2 flags aligned, 4 36 3 assigned_ev_channel 4 37 bit (1) unaligned, /* we got the channel as fast channel */ 4 38 3 created_ev_channel bit (1) unaligned, /* we got it as slow channel */ 4 39 3 have_ev_channel /* there is a channel to use */ 4 40 bit (1) unaligned, 4 41 3 login_channel bit (1) unaligned, /* we are login channel */ 4 42 3 phone_given bit (1) unaligned, /* dial_out */ 4 43 3 must_release bit (1) unaligned, /* we must call release channel */ 4 44 3 no_block bit (1) unaligned, /* never block */ 4 45 3 async_detach bit (1) unaligned, /* detach_iocb with hlock nonzero */ 4 46 3 hangup bit (1) unaligned, 4 47 3 debug bit (1) unaligned, 4 48 3 pad bit (26) unaligned, 4 49 2 dial_manager_event aligned like event_wait_channel, 4 50 /* so we can do set_hangup_proc */ 4 51 2 event_wait aligned like event_wait_channel; 4 52 /* init attributes and all */ 4 53 5 1 /* BEGIN INCLUDE FILE ... event_wait_channel.incl.pl1 */ 5 2 5 3 /* ipc_$block wait list with one channel 5 4* 5 5* Written 9-May-79 by M. N. Davidoff. 5 6**/ 5 7 5 8 declare 1 event_wait_channel aligned, 5 9 2 n_channels fixed bin initial (1), /* number of channels */ 5 10 2 pad bit (36), 5 11 2 channel_id (1) fixed bin (71); /* event channel to wait on */ 5 12 5 13 /* END INCLUDE FILE ... event_wait_channel.incl.pl1 */ 4 54 4 55 4 56 /* END INCLUDE FILE tc_io_attach_data_.incl.pl1 */ 934 6 1 /* begin include file tc_desk_info_.incl.pl1 BIM June 1981 */ 6 2 /* Modified 1 October 1983 by Jon A. Rochlis to add support for partial 6 3* screen width windows */ 6 4 /* Modified 28 March 1984 by JR to add window_iocb_ptr so tc_ can inform 6 5* window_ of events such as reconnection, by doing set_window_status control 6 6* orders. */ 6 7 6 8 /* internal interface */ 6 9 6 10 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 6 11 /* requests to desk management, first pass implementation */ 6 12 6 13 declare tc_desk_info_ptr pointer; 6 14 declare 1 tc_desk_window_info aligned based (tc_desk_info_ptr), 6 15 2 first_row fixed bin, /* top row of window */ 6 16 2 n_rows fixed bin, /* How many rows */ 6 17 2 first_column fixed bin, /* Fist column of window */ 6 18 2 n_columns fixed bin, /* How many columns */ 6 19 2 window_id bit (36) aligned, 6 20 2 window_iocb_ptr ptr; 6 21 6 22 /* used in calls to terminal control to establish rearrange, 6 23* and inquire about windows */ 6 24 6 25 /* end include file tc_desk_info_.incl.pl1 */ 935 936 7 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 7 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 7 3* version number to IOX2. */ 7 4 /* format: style2 */ 7 5 7 6 dcl 1 iocb aligned based, /* I/O control block. */ 7 7 2 version character (4) aligned, /* IOX2 */ 7 8 2 name char (32), /* I/O name of this block. */ 7 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 7 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 7 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 7 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 7 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 7 14 2 reserved bit (72), /* Reserved for future use. */ 7 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 7 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 7 17 /* open(p,mode,not_used,s) */ 7 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 7 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 7 20 /* get_line(p,bufptr,buflen,actlen,s) */ 7 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 7 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 7 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 7 24 /* put_chars(p,bufptr,buflen,s) */ 7 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 7 26 /* modes(p,newmode,oldmode,s) */ 7 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 7 28 /* position(p,u1,u2,s) */ 7 29 2 control entry (ptr, char (*), ptr, fixed (35)), 7 30 /* control(p,order,infptr,s) */ 7 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 7 32 /* read_record(p,bufptr,buflen,actlen,s) */ 7 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 7 34 /* write_record(p,bufptr,buflen,s) */ 7 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 7 36 /* rewrite_record(p,bufptr,buflen,s) */ 7 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 7 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 7 39 /* seek_key(p,key,len,s) */ 7 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 7 41 /* read_key(p,key,len,s) */ 7 42 2 read_length entry (ptr, fixed (21), fixed (35)), 7 43 /* read_length(p,len,s) */ 7 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 7 45 /* open_file(p,mode,desc,not_used,s) */ 7 46 2 close_file entry (ptr, char (*), fixed bin (35)), 7 47 /* close_file(p,desc,s) */ 7 48 2 detach entry (ptr, char (*), fixed bin (35)); 7 49 /* detach(p,desc,s) */ 7 50 7 51 declare iox_$iocb_version_sentinel 7 52 character (4) aligned external static; 7 53 7 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 937 8 1 /* BEGIN INCLUDE FILE ... dial_manager_arg.incl.pl1 */ 8 2 8 3 /* Modified by E. N. Kittlitz 11/80 to add reservation string, move dial-out 8 4* destination from dial_qualifier, add dial_message. 8 5* Modified by Robert Coren 4/83 to add required access class stuff. 8 6* Modified 1984-08-27 BIM for V4, privileged_operation. 8 7**/ 8 8 8 9 8 10 dcl dial_manager_arg_version_2 fixed bin internal static initial (2) options (constant); 8 11 dcl dial_manager_arg_version_3 fixed bin internal static initial (3) options (constant); 8 12 dcl dial_manager_arg_version_4 fixed bin internal static initial (4) options (constant); 8 13 8 14 dcl 1 dial_manager_arg based aligned, 8 15 2 version fixed bin, /* = 4 */ 8 16 2 dial_qualifier char (22), /* identify different processes with same process group id */ 8 17 2 dial_channel fixed bin (71), /* event wait channel */ 8 18 2 channel_name char (32), /* channel name for privileged attach */ 8 19 /* limit of version 1 structure */ 8 20 2 dial_out_destination char (32), /* dial-out destination (e.g. phone_no) */ 8 21 2 reservation_string char (256), /* reservation string */ 8 22 2 dial_message fixed bin (71), /* OUTPUT: A.S. message received by dial_manager_ */ 8 23 /* limit of version 2 structure */ 8 24 2 access_class bit (72), /* access class to be associated with the attachment */ 8 25 2 flags aligned, 8 26 3 access_class_required bit (1) unaligned, /* indicates whether to enforce access_class */ 8 27 3 privileged_operation bit (1) unaligned, /* for accept_dials, accepts dials from */ 8 28 /* system_low:access_class */ 8 29 /* no effect on other operations yet. */ 8 30 3 mbz bit (34) unaligned; /* must be zero */ 8 31 8 32 /* END INCLUDE FILE ... dial_manager_arg.incl.pl1 */ 938 9 1 /* BEGIN INCLUDE FILE event_wait_info.incl.pl1 */ 9 2 9 3 /* T. Casey, May 1978 */ 9 4 9 5 dcl event_wait_info_ptr ptr; 9 6 9 7 dcl 1 event_wait_info aligned based (event_wait_info_ptr), /* argument structure filled in on return from ipc_$block */ 9 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 9 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 9 10 2 sender bit (36), /* process id of sender */ 9 11 2 origin, 9 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 9 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 9 14 2 channel_index fixed bin; /* index of this channel in the event wait list */ 9 15 9 16 /* END INCLUDE FILE event_wait_info.incl.pl1 */ 939 10 1 /*----------BEGIN ipc_create_arg.incl.pl1------------------------------------*/ 10 2 10 3 /* 10 4* This include file declares the structure which is the input argument to 10 5* ipc_$create_event_channel. 10 6**/ 10 7 10 8 /****^ HISTORY COMMENTS: 10 9* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7479), 10 10* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 10 11* New include file added to support async event channels. 10 12* END HISTORY COMMENTS */ 10 13 10 14 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 10 15 10 16 dcl ipc_create_arg_structure_ptr ptr; 10 17 dcl ipc_create_arg_structure_v1 char (8) internal static options (constant) init ("ipcarg01"); 10 18 10 19 dcl 1 ipc_create_arg_structure aligned based (ipc_create_arg_structure_ptr), 10 20 2 version char (8) unaligned, /* From above. */ 10 21 2 channel_type fixed bin, /* See constants below. */ 10 22 2 call_entry variable entry (ptr), /* For event call channels -- who to call. */ 10 23 2 call_data_ptr ptr, /* For event call channels -- something to tell them. */ 10 24 2 call_priority fixed bin (17); /* For event call channels -- who's first? */ 10 25 10 26 /* Constants for the event channel type. */ 10 27 10 28 dcl FAST_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (1); 10 29 dcl WAIT_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (2); 10 30 dcl CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (3); 10 31 dcl ASYNC_CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (4); 10 32 10 33 dcl ANY_CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (10); 10 34 10 35 /*----------END ipc_create_arg.incl.pl1--------------------------------------*/ 940 11 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 11 2 11 3 /* Created 5/25/77 by J. Stern */ 11 4 11 5 11 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 11 7 2 version fixed bin, /* version number of this sturcture */ 11 8 2 id char (4) unaligned, /* terminal id from answerback */ 11 9 2 term_type char (32) unaligned, /* terminal type name */ 11 10 2 line_type fixed bin, /* line type number */ 11 11 2 baud_rate fixed bin, 11 12 2 reserved (4) fixed bin; /* reserved for future use */ 11 13 11 14 11 15 dcl terminal_info_ptr ptr; 11 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 11 17 11 18 11 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 941 942 end tc_io_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/90 0816.1 tc_io_.pl1 >spec>install>1044>tc_io_.pl1 930 1 08/06/87 1013.5 net_event_message.incl.pl1 >ldd>include>net_event_message.incl.pl1 931 2 05/23/83 1016.6 iox_entries.incl.pl1 >ldd>include>iox_dcls.incl.pl1 932 3 02/02/78 1329.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 934 4 01/06/87 1457.0 tc_io_attach_data_.incl.pl1 >ldd>include>tc_io_attach_data_.incl.pl1 4-54 5 06/29/79 1828.0 event_wait_channel.incl.pl1 >ldd>include>event_wait_channel.incl.pl1 935 6 09/12/84 1016.7 tc_desk_info_.incl.pl1 >ldd>include>tc_desk_info_.incl.pl1 937 7 05/20/83 1946.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 938 8 09/13/84 1021.5 dial_manager_arg.incl.pl1 >ldd>include>dial_manager_arg.incl.pl1 939 9 06/29/79 1827.8 event_wait_info.incl.pl1 >ldd>include>event_wait_info.incl.pl1 940 10 11/07/86 1650.3 ipc_create_arg.incl.pl1 >ldd>include>ipc_create_arg.incl.pl1 941 11 06/29/77 1724.0 terminal_info.incl.pl1 >ldd>include>terminal_info.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. Attach_options parameter varying char array dcl 86 ref 216 216 225 237 237 238 242 245 248 250 253 253 259 259 262 266 266 271 271 277 280 280 285 287 290 290 290 293 295 299 304 307 309 315 Code parameter fixed bin(35,0) dcl 82 in procedure "tc_io_" set ref 216 216 220* 309* 310 310* 358* 359 359* 469* 485 520 528* 532* 533 604* 614 621* 665 675* 679* 680 690* 693* 701 703* 753* 754 759* 760 760* 897* Code parameter fixed bin(35,0) dcl 540 in procedure "open_common" set ref 536 545* 546 552* 558* 561 568* 570 Code parameter fixed bin(35,0) dcl 801 in procedure "try_dial_manager_attach" set ref 798 803* 804* 805 815* 817* 824 828* 831 840* 842 845* 846 850* Code 000100 automatic fixed bin(35,0) dcl 861 in procedure "release_channel" set ref 867* 870* 872* 873* Code parameter fixed bin(35,0) dcl 773 in procedure "try_hcs_attach" set ref 770 775* 783* 793* Code parameter fixed bin(35,0) dcl 626 in procedure "close_common" set ref 623 639* 641* Code parameter fixed bin(35,0) dcl 366 in procedure "attach_common" set ref 362 368* 369 380* 383 399* 400 407* 408 Com_err_switch parameter bit(1) dcl 83 ref 216 216 465 DSA_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 1-35 ref 378 552 595 630 782 883 FAST_EVENT_CHANNEL_TYPE constant fixed bin(17,0) initial dcl 10-28 ref 749 Ignore parameter bit(1) dcl 84 ref 520 Iocbp parameter pointer dcl 81 ref 216 216 222 485 520 614 898 MCS_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 1-34 ref 792 ME 000123 constant char(32) initial packed unaligned dcl 131 set ref 438* 465* 467* MOWSE_DEVICE 000120 constant char(9) initial packed unaligned dcl 133 ref 312 337 786 MOWSE_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 1-36 ref 393 438 542 555 598 633 788 886 Open_mode parameter fixed bin(17,0) dcl 85 ref 520 525 525 P_attach_data_ptr parameter pointer dcl 668 ref 665 670 Stream_input_output constant fixed bin(17,0) initial dcl 3-15 ref 525 WAIT_EVENT_CHANNEL_TYPE constant fixed bin(17,0) initial dcl 10-29 ref 758 access_class_range 000103 automatic bit(72) array packed unaligned dcl 92 set ref 380* actual_iocb_ptr 12 based pointer level 2 dcl 7-6 ref 898 actual_iocbp 000110 automatic pointer dcl 94 set ref 496 497 498 499 500 501* 584 585 586 587 588 590* 651 652 653 654 655 657* 898* 899 addr builtin function dcl 126 ref 424 584 733 733 753 753 759 759 815 815 817 817 840 840 840 840 867 867 870 870 872 872 any_other 000456 stack reference condition dcl 156 ref 421 429 494 505 581 592 648 assigned_ev_channel 243 based bit(1) level 3 packed packed unaligned dcl 4-20 set ref 639 643 754* async_detach 243(07) based bit(1) level 3 packed packed unaligned dcl 4-20 set ref 504* attach_data based structure level 1 dcl 4-20 set ref 331 502 914 attach_data_ptr 16 based pointer level 2 in structure "iocb" dcl 7-6 in procedure "tc_io_" set ref 425* 497* 899 attach_data_ptr 000472 automatic pointer dcl 4-19 in procedure "tc_io_" set ref 231* 331* 333 335 336 337 337 339 340 341 342 343 344 345 346 347 348 372 378 380 380 380 393 424 425 438 438 438 438 438 438 438 438 438 438 438 502 502 504 525 542 552 552 555 558 568 568 568 568 568 584 595 595 598 598 601 619 630 630 633 633 636 639 639 641 641 643 643 643 670* 673 678 689 689 741 753 754 759 764 782 783 783 788 792 793 793 804 808 810 811 811 815 824 833 835 838 840 840 854 855 862 865 866 867 870 873 874 883 883 886 889 899* 908 910 912 914 attach_descrip 4 based varying char(128) level 2 dcl 4-20 set ref 424 438* attach_descrip_ptr 14 based pointer level 2 dcl 7-6 set ref 234 424* 496* call_data_ptr 10 000422 automatic pointer level 2 dcl 112 set ref 751* call_entry 4 000422 automatic entry variable level 2 dcl 112 set ref 750* call_priority 12 000422 automatic fixed bin(17,0) level 2 dcl 112 set ref 752* cd parameter fixed bin(35,0) dcl 724 ref 721 732 channel_id 246 based fixed bin(71,0) array level 3 in structure "attach_data" dcl 4-20 in procedure "tc_io_" set ref 804* 808 833* 866 873* channel_id 252 based fixed bin(71,0) array level 3 in structure "attach_data" dcl 4-20 in procedure "tc_io_" set ref 568* 639* 641* 753* 759* channel_name 12 000262 automatic char(32) level 2 dcl 110 set ref 810* 865* channel_type 2 000422 automatic fixed bin(17,0) level 2 dcl 112 set ref 749* 758* cleanup 000464 stack reference condition dcl 156 ref 232 close 36 based entry variable level 2 dcl 7-6 set ref 587* code 1 000100 automatic fixed bin(35,0) level 2 dcl 726 set ref 732* com_err_ 000034 constant entry external dcl 161 ref 465 connection_info based fixed bin(35,0) array dcl 139 ref 390 control 66 based entry variable level 2 dcl 7-6 set ref 500* 588* 654* convert_dial_message_$return_io_module 000036 constant entry external dcl 162 ref 845 created_ev_channel 243(01) based bit(1) level 3 packed packed unaligned dcl 4-20 set ref 641 643 detach_iocb 26 based entry variable level 2 dcl 7-6 set ref 426* 498* 585* 652* device 000112 automatic char(32) packed unaligned dcl 95 set ref 227* 240 242* 312* 320 325* 328 336 341 688* 689 780 786 845* 855 device_id 66 based char(32) level 2 packed packed unaligned dcl 4-20 set ref 336* 337 380* 689* 810 device_used 76 based char(32) level 2 packed packed unaligned dcl 4-20 set ref 341* 380* 438* 568* 689* 783* 793* 855* 865 dial_channel 10 000262 automatic fixed bin(71,0) level 2 dcl 110 set ref 808* 866* dial_manager_$dial_out 000040 constant entry external dcl 165 ref 815 dial_manager_$privileged_attach 000042 constant entry external dcl 165 ref 817 dial_manager_$release_channel 000044 constant entry external dcl 165 ref 872 dial_manager_$release_channel_no_hangup 000046 constant entry external dcl 165 ref 870 dial_manager_$terminate_dial_out 000050 constant entry external dcl 165 ref 867 dial_manager_arg based structure level 1 dcl 8-14 dial_manager_arg_version_2 constant fixed bin(17,0) initial dcl 8-10 ref 807 864 dial_manager_event 244 based structure level 2 dcl 4-20 set ref 840 840 dial_out_destination 22 000262 automatic char(32) level 2 dcl 110 set ref 811* 813* dial_phone 116 based varying char(64) level 2 dcl 4-20 set ref 343* 380* 438* 811 dial_qualifier 1 000262 automatic char(22) level 2 dcl 110 set ref 809* dialup 000435 automatic bit(1) level 2 packed packed unaligned dcl 115 set ref 848 dm_flags 000435 automatic structure level 1 dcl 115 set ref 845* dma 000262 automatic structure level 1 dcl 110 set ref 815 815 817 817 867 867 870 870 872 872 do_not_block 000132 automatic bit(1) packed unaligned dcl 97 set ref 229* 301* 346 dsa_connection_info_len 000102 automatic fixed bin(21,0) dcl 91 set ref 380* 390 dsa_connection_info_ptr 000100 automatic pointer dcl 90 set ref 380* 390 dsa_tty_$attach 000104 constant entry external dcl 186 ref 783 dsa_tty_$connect 000106 constant entry external dcl 187 ref 380 dsa_tty_$detach 000110 constant entry external dcl 190 ref 552 883 dsa_tty_$event 000112 constant entry external dcl 191 ref 630 dsa_tty_$order 000114 constant entry external dcl 192 ref 595 err_code parameter fixed bin(35,0) dcl 461 set ref 458 465* 467* 469 error_string parameter char packed unaligned dcl 365 in procedure "attach_common" set ref 362 374* 385* 395* 402* 410* error_string 000445 automatic char(32) packed unaligned dcl 122 in procedure "tc_io_" set ref 358* 359* error_table_$action_not_performed 000014 external static fixed bin(35,0) dcl 143 ref 850 error_table_$bad_mode 000024 external static fixed bin(35,0) dcl 143 ref 528 error_table_$bad_ptr 000026 external static fixed bin(35,0) dcl 143 ref 675 error_table_$badopt 000022 external static fixed bin(35,0) dcl 143 set ref 315* error_table_$inconsistent 000016 external static fixed bin(35,0) dcl 143 set ref 318* 320* 322* error_table_$noarg 000030 external static fixed bin(35,0) dcl 143 set ref 225* 259* 263* 271* 275* 285* 293* 307* 328* error_table_$not_detached 000020 external static fixed bin(35,0) dcl 143 set ref 234* error_table_$resource_attached 000012 external static fixed bin(35,0) dcl 143 ref 824 error_table_$too_many_args 000010 external static fixed bin(35,0) dcl 143 set ref 256* 269* 283* error_table_$unable_to_do_io 000156 external static fixed bin(35,0) dcl 714 set ref 716* error_table_$wrong_no_of_args 000032 external static fixed bin(35,0) dcl 143 set ref 240* event_message 000436 automatic structure level 1 dcl 121 set ref 840 840 event_wait 250 based structure level 2 dcl 4-20 event_wait_channel 000474 automatic structure level 1 dcl 5-8 event_wait_info based structure level 1 dcl 9-7 flags 243 based structure level 2 dcl 4-20 set ref 335* get_system_free_area_ 000052 constant entry external dcl 172 ref 331 380 380 hangup 243(08) based bit(1) level 3 in structure "attach_data" packed packed unaligned dcl 4-20 in procedure "tc_io_" set ref 347* 438 870 hangup 000136 automatic bit(1) packed unaligned dcl 100 in procedure "tc_io_" set ref 230* 248* 250* 347 have_ev_channel 243(02) based bit(1) level 3 packed packed unaligned dcl 4-20 set ref 643* 741 764* hbound builtin function dcl 126 ref 225 237 259 271 285 293 307 hcs_$delete_channel 000066 constant entry external dcl 179 ref 639 hcs_$reset_ips_mask 000070 constant entry external dcl 180 ref 924 hcs_$set_ips_mask 000072 constant entry external dcl 181 ref 919 hcs_$tty_attach 000074 constant entry external dcl 182 ref 793 hcs_$tty_detach 000076 constant entry external dcl 183 ref 558 889 hcs_$tty_event 000100 constant entry external dcl 184 ref 636 hcs_$tty_order 000102 constant entry external dcl 185 ref 601 i 000133 automatic fixed bin(17,0) dcl 98 set ref 237* 238 242 245 248 250 253 253 255* 255 259 259 262 266 266 268* 268 271 271 277 280 280 282* 282 285 287 290 290 290 292* 292 293 295 299 304 306* 306 307 309 315* index builtin function dcl 126 ref 238 259 271 337 786 ioa_$rsnnl 000054 constant entry external dcl 173 ref 438 iocb based structure level 1 dcl 7-6 iocbp 000134 automatic pointer dcl 99 set ref 222* 234 424 425 426 427 428* 465 467 iox_$err_not_attached 000142 constant entry external dcl 2-8 ref 498 499 500 iox_$err_not_closed 000144 constant entry external dcl 2-8 ref 585 586 iox_$err_not_open 000146 constant entry external dcl 2-8 ref 654 655 iox_$find_iocb 000150 constant entry external dcl 2-8 ref 309 iox_$propagate 000152 constant entry external dcl 2-8 ref 428 501 590 657 iox_modes 000002 constant char(24) initial array dcl 3-6 ref 525 ipc_$block 000122 constant entry external dcl 195 ref 840 ipc_$create_ev_chn 000060 constant entry external dcl 175 ref 804 ipc_$create_event_channel 000062 constant entry external dcl 176 ref 753 759 ipc_$delete_ev_chn 000064 constant entry external dcl 178 ref 641 833 873 ipc_$mask_ev_calls 000124 constant entry external dcl 196 ref 545 ipc_$unmask_ev_calls 000126 constant entry external dcl 196 ref 563 572 593 694 ipc_create_arg_structure based structure level 1 dcl 10-19 ipc_create_arg_structure_v1 000000 constant char(8) initial packed unaligned dcl 10-17 ref 748 ipcas 000422 automatic structure level 1 dcl 112 set ref 753 753 759 759 lbound builtin function dcl 126 ref 237 login_channel 243(03) based bit(1) level 3 in structure "attach_data" packed packed unaligned dcl 4-20 in procedure "tc_io_" set ref 345* 372 438* 438 login_channel 000137 automatic bit(1) packed unaligned dcl 101 in procedure "tc_io_" set ref 229* 245* 318 320 322 325 345 mask 000140 automatic bit(36) dcl 102 set ref 221* 716 900* 919 919* 924 924* 924* message 2 000436 automatic fixed bin(71,0) level 2 in structure "event_message" dcl 121 in procedure "tc_io_" set ref 845* message parameter char packed unaligned dcl 462 in procedure "error" set ref 458 465* 467* modes 56 based entry variable level 2 dcl 7-6 set ref 655* mowse_terminal_iocb_ptr 2 based pointer level 2 dcl 4-20 set ref 337* 339* 568* 598* 633* mowse_terminal_iocbp 000142 automatic pointer dcl 103 set ref 309* 337 must_release 243(05) based bit(1) level 3 packed packed unaligned dcl 4-20 set ref 835* 838* 854* 862 874* 912 n_channels 250 based fixed bin(17,0) initial level 3 in structure "attach_data" dcl 4-20 in procedure "tc_io_" set ref 331* n_channels 244 based fixed bin(17,0) initial level 3 in structure "attach_data" dcl 4-20 in procedure "tc_io_" set ref 331* n_channels 000474 automatic fixed bin(17,0) initial level 2 in structure "event_wait_channel" dcl 5-8 in procedure "tc_io_" set ref 5-8* name 1 based char(32) level 2 dcl 7-6 set ref 465* 467* network_type 237 based fixed bin(17,0) level 2 dcl 4-20 set ref 378 393 438 542 552 555 595 598 630 633 782* 788* 792* 883 886 no_block 243(06) based bit(1) level 3 packed packed unaligned dcl 4-20 set ref 346* 438* null builtin function dcl 126 ref 231 234 333 339 380 380 467 467 496 497 595 595 598 598 601 601 651 673 751 908 null_entry_ 000056 constant entry external dcl 174 ref 750 open 32 based entry variable level 2 dcl 7-6 set ref 427* 499* 586* 653* open_descrip 45 based varying char(64) level 2 dcl 4-20 set ref 525* 584 open_descrip_ptr 20 based pointer level 2 dcl 7-6 set ref 584* 651* operation_hlock 242 based fixed bin(17,0) level 2 dcl 4-20 set ref 348* 502 password 000154 automatic char(12) packed unaligned dcl 105 set ref 227* 295* 318 password_given 000157 automatic bit(1) packed unaligned dcl 106 set ref 228* 296* 438* phone_given 243(04) based bit(1) level 3 packed packed unaligned dcl 4-20 set ref 344* 438* 811 815 824 867 phone_no 000144 automatic char(32) packed unaligned dcl 104 set ref 227* 283 287* 318 343 344 reconnection_flag parameter bit(1) packed unaligned dcl 539 set ref 536 568* reservation_string 32 000262 automatic char(256) level 2 dcl 110 set ref 814* resource_desc 137 based char(256) level 2 packed packed unaligned dcl 4-20 set ref 342* 438 438* resource_description 000160 automatic char(256) packed unaligned dcl 107 set ref 227* 269 277* 322 342 814 state 000260 automatic fixed bin(17,0) dcl 108 set ref 595* 598* 601* 783* 793* string builtin function dcl 126 set ref 335* sub_err_ 000154 constant entry external dcl 463 ref 467 substr builtin function dcl 126 ref 780 system_free_area based area(1024) dcl 138 ref 331 tc_$init 000132 constant entry external dcl 203 ref 568 tc_$shut 000134 constant entry external dcl 204 ref 619 tc_$shut_ttp_info 000136 constant entry external dcl 205 ref 678 tc_$tc_io_control 000140 constant entry external dcl 206 ref 588 tc_info_ptr based pointer level 2 dcl 4-20 set ref 333* 568* 619* 673 678* terminal_type 000122 automatic char(32) packed unaligned dcl 96 in procedure "tc_io_" set ref 227* 256 262* 340 terminal_type 106 based char(32) level 2 in structure "attach_data" packed packed unaligned dcl 4-20 in procedure "tc_io_" set ref 340* 568* terminate_process_ 000160 constant entry external dcl 725 ref 733 ti 000100 automatic structure level 1 dcl 726 set ref 733 733 tty_handle 241 based fixed bin(35,0) level 2 dcl 4-20 set ref 552* 595* 630* 783* 883* tty_index 240 based fixed bin(17,0) level 2 dcl 4-20 set ref 558* 601* 636* 793* 889* 910 user_info_$terminal_data 000130 constant entry external dcl 201 ref 325 688 version 000262 automatic fixed bin(17,0) level 2 in structure "dma" dcl 110 in procedure "tc_io_" set ref 807* 864* version 000100 automatic fixed bin(17,0) level 2 in structure "ti" dcl 726 in procedure "terminate_this_process" set ref 731* version 000422 automatic char(8) level 2 in structure "ipcas" packed packed unaligned dcl 112 in procedure "tc_io_" set ref 748* ws_tty_$event 000116 constant entry external dcl 193 ref 633 ws_tty_$order 000120 constant entry external dcl 194 ref 598 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANY_CALL_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 10-33 ASYNC_CALL_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 10-31 CALL_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 10-30 DSA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 1-83 DSA_DATA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 1-84 DSA_DATA_INPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 1-100 DSA_DATA_OUTPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 1-101 DSA_DEMAND_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 1-85 DSA_DEMAND_TURN_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 1-87 DSA_DEMAND_TURN_MSG internal static fixed bin(8,0) initial unsigned dcl 1-86 DSA_ESTABLISHMENT_MSG internal static fixed bin(8,0) initial unsigned dcl 1-97 DSA_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 1-103 DSA_PURGE_MSG internal static fixed bin(8,0) initial unsigned dcl 1-88 DSA_RECOVER_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 1-90 DSA_RECOVER_MSG internal static fixed bin(8,0) initial unsigned dcl 1-89 DSA_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 1-91 DSA_RESUME_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 1-93 DSA_RESUME_MSG internal static fixed bin(8,0) initial unsigned dcl 1-92 DSA_SUSPEND_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 1-95 DSA_SUSPEND_MSG internal static fixed bin(8,0) initial unsigned dcl 1-94 DSA_TERMINATED_MSG internal static fixed bin(8,0) initial unsigned dcl 1-98 DSA_TERM_ABNORMAL_MSG internal static fixed bin(8,0) initial unsigned dcl 1-96 DSA_UNSPECIFIED_MSG internal static fixed bin(8,0) initial unsigned dcl 1-82 DSA_USER_UNASSIGN_MSG internal static fixed bin(8,0) initial unsigned dcl 1-99 Direct_input internal static fixed bin(17,0) initial dcl 3-15 Direct_output internal static fixed bin(17,0) initial dcl 3-15 Direct_update internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 3-15 MAX_DSA_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 1-80 MAX_MCS_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 1-46 MCS_DIALOUT_MSG internal static fixed bin(17,0) initial dcl 1-54 MCS_DIALUP_MSG internal static fixed bin(17,0) initial dcl 1-50 MCS_HANGUP_MSG internal static fixed bin(17,0) initial dcl 1-52 MCS_LINE_STATUS_MSG internal static fixed bin(17,0) initial dcl 1-62 MCS_MASKED_MSG internal static fixed bin(17,0) initial dcl 1-64 MCS_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 1-67 MCS_QUIT_MSG internal static fixed bin(17,0) initial dcl 1-56 MCS_READ_MSG internal static fixed bin(17,0) initial dcl 1-58 MCS_UNSPECIFIED_MSG internal static fixed bin(17,0) initial dcl 1-48 MCS_WRITE_MSG internal static fixed bin(17,0) initial dcl 1-60 NETWORK_TYPE_VALUES internal static varying char(8) initial array dcl 1-38 NET_EVENT_MESSAGE_VERSION_1 internal static bit(2) initial packed unaligned dcl 1-20 Sequential_input internal static fixed bin(17,0) initial dcl 3-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_update internal static fixed bin(17,0) initial dcl 3-15 Stream_input internal static fixed bin(17,0) initial dcl 3-15 Stream_output internal static fixed bin(17,0) initial dcl 3-15 dial_manager_arg_version_3 internal static fixed bin(17,0) initial dcl 8-11 dial_manager_arg_version_4 internal static fixed bin(17,0) initial dcl 8-12 event_wait_info_ptr automatic pointer dcl 9-5 iox_$attach_loud 000000 constant entry external dcl 2-8 iox_$attach_name 000000 constant entry external dcl 2-8 iox_$attach_ptr 000000 constant entry external dcl 2-8 iox_$close 000000 constant entry external dcl 2-8 iox_$close_file 000000 constant entry external dcl 2-8 iox_$control 000000 constant entry external dcl 2-8 iox_$delete_record 000000 constant entry external dcl 2-8 iox_$destroy_iocb 000000 constant entry external dcl 2-8 iox_$detach 000000 constant entry external dcl 2-8 iox_$detach_iocb 000000 constant entry external dcl 2-8 iox_$err_no_operation 000000 constant entry external dcl 2-8 iox_$error_output external static pointer dcl 2-41 iox_$find_iocb_n 000000 constant entry external dcl 2-8 iox_$get_chars 000000 constant entry external dcl 2-8 iox_$get_line 000000 constant entry external dcl 2-8 iox_$iocb_version_sentinel external static char(4) dcl 7-51 iox_$look_iocb 000000 constant entry external dcl 2-8 iox_$modes 000000 constant entry external dcl 2-8 iox_$move_attach 000000 constant entry external dcl 2-8 iox_$open 000000 constant entry external dcl 2-8 iox_$open_file 000000 constant entry external dcl 2-8 iox_$position 000000 constant entry external dcl 2-8 iox_$put_chars 000000 constant entry external dcl 2-8 iox_$read_key 000000 constant entry external dcl 2-8 iox_$read_length 000000 constant entry external dcl 2-8 iox_$read_record 000000 constant entry external dcl 2-8 iox_$rewrite_record 000000 constant entry external dcl 2-8 iox_$seek_key 000000 constant entry external dcl 2-8 iox_$user_input external static pointer dcl 2-41 iox_$user_io external static pointer dcl 2-41 iox_$user_output external static pointer dcl 2-41 iox_$write_record 000000 constant entry external dcl 2-8 ipc_create_arg_structure_ptr automatic pointer dcl 10-16 net_event_message based structure level 1 dcl 1-22 net_event_message_arg automatic fixed bin(71,0) dcl 1-19 short_iox_modes internal static char(4) initial array dcl 3-12 tc_desk_info_ptr automatic pointer dcl 6-13 tc_desk_window_info based structure level 1 dcl 6-14 terminal_info based structure level 1 dcl 11-6 terminal_info_ptr automatic pointer dcl 11-15 terminal_info_version internal static fixed bin(17,0) initial dcl 11-16 NAMES DECLARED BY EXPLICIT CONTEXT. RETURN 002505 constant label dcl 432 ref 472 allocate_ev_channel 004573 constant entry internal dcl 738 ref 544 attach_common 003425 constant entry internal dcl 362 ref 358 690 clean_up_attach 005476 constant entry internal dcl 905 ref 232 471 close_common 004346 constant entry internal dcl 623 ref 621 679 dm_call_failed_ 005147 constant label dcl 833 ref 842 846 851 error 004004 constant entry internal dcl 458 ref 225 234 240 256 259 263 269 271 275 283 285 293 307 310 315 318 320 322 328 359 760 handler 004516 constant entry internal dcl 711 ref 421 494 581 648 hcs_detach 005405 constant entry internal dcl 880 ref 490 684 910 make_atd 003651 constant entry internal dcl 435 ref 420 open_common 004162 constant entry internal dcl 536 ref 532 693 reconnection 003225 constant entry external dcl 665 release_channel 005272 constant entry internal dcl 859 ref 492 685 912 reset_ips_mask 005555 constant entry internal dcl 922 ref 430 506 591 659 set_ips_mask 005536 constant entry internal dcl 917 ref 423 495 582 649 set_up 005462 constant entry internal dcl 894 ref 488 523 617 tc_io_ 000657 constant entry external dcl 38 tc_io_attach 000715 constant entry external dcl 216 tc_io_close 003121 constant entry external dcl 614 ref 587 tc_io_detach 002512 constant entry external dcl 485 ref 426 652 tc_io_open 002622 constant entry external dcl 520 ref 427 653 terminate_the_process 003405 constant entry external dcl 701 terminate_this_process 004537 constant entry internal dcl 721 ref 703 716 try_dial_manager_attach 005024 constant entry internal dcl 798 ref 399 try_hcs_attach 004704 constant entry internal dcl 770 ref 368 407 tty_attach 000673 constant entry external dcl 216 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6564 6746 5574 6574 Length 7520 5574 162 536 770 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tc_io_ 792 external procedure is an external procedure. on unit on line 232 64 on unit attach_common internal procedure shares stack frame of external procedure tc_io_. on unit on line 421 64 on unit make_atd internal procedure shares stack frame of external procedure tc_io_. error 128 internal procedure is called during a stack extension. on unit on line 494 64 on unit open_common internal procedure shares stack frame of external procedure tc_io_. on unit on line 581 64 on unit close_common internal procedure shares stack frame of external procedure tc_io_. on unit on line 648 64 on unit handler 70 internal procedure is declared options(non_quick). terminate_this_process 82 internal procedure is declared options(non_quick). allocate_ev_channel internal procedure shares stack frame of external procedure tc_io_. try_hcs_attach internal procedure shares stack frame of external procedure tc_io_. try_dial_manager_attach internal procedure shares stack frame of external procedure tc_io_. release_channel 74 internal procedure is called by several nonquick procedures. hcs_detach 78 internal procedure is called by several nonquick procedures. set_up internal procedure shares stack frame of external procedure tc_io_. clean_up_attach 64 internal procedure is called by several nonquick procedures. set_ips_mask internal procedure shares stack frame of external procedure tc_io_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME release_channel 000100 Code release_channel tc_io_ 000100 dsa_connection_info_ptr tc_io_ 000102 dsa_connection_info_len tc_io_ 000103 access_class_range tc_io_ 000110 actual_iocbp tc_io_ 000112 device tc_io_ 000122 terminal_type tc_io_ 000132 do_not_block tc_io_ 000133 i tc_io_ 000134 iocbp tc_io_ 000136 hangup tc_io_ 000137 login_channel tc_io_ 000140 mask tc_io_ 000142 mowse_terminal_iocbp tc_io_ 000144 phone_no tc_io_ 000154 password tc_io_ 000157 password_given tc_io_ 000160 resource_description tc_io_ 000260 state tc_io_ 000262 dma tc_io_ 000422 ipcas tc_io_ 000435 dm_flags tc_io_ 000436 event_message tc_io_ 000445 error_string tc_io_ 000472 attach_data_ptr tc_io_ 000474 event_wait_channel tc_io_ terminate_this_process 000100 ti terminate_this_process THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc set_chars_eis index_chars_eis op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ convert_dial_message_$return_io_module dial_manager_$dial_out dial_manager_$privileged_attach dial_manager_$release_channel dial_manager_$release_channel_no_hangup dial_manager_$terminate_dial_out dsa_tty_$attach dsa_tty_$connect dsa_tty_$detach dsa_tty_$event dsa_tty_$order get_system_free_area_ hcs_$delete_channel hcs_$reset_ips_mask hcs_$set_ips_mask hcs_$tty_attach hcs_$tty_detach hcs_$tty_event hcs_$tty_order ioa_$rsnnl iox_$err_not_attached iox_$err_not_closed iox_$err_not_open iox_$find_iocb iox_$propagate ipc_$block ipc_$create_ev_chn ipc_$create_event_channel ipc_$delete_ev_chn ipc_$mask_ev_calls ipc_$unmask_ev_calls null_entry_ sub_err_ tc_$init tc_$shut tc_$shut_ttp_info tc_$tc_io_control terminate_process_ user_info_$terminal_data ws_tty_$event ws_tty_$order THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bad_mode error_table_$bad_ptr error_table_$badopt error_table_$inconsistent error_table_$noarg error_table_$not_detached error_table_$resource_attached error_table_$too_many_args error_table_$unable_to_do_io error_table_$wrong_no_of_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 5 8 000652 38 000656 216 000665 220 000734 221 000735 222 000736 225 000742 227 000767 228 001006 229 001007 230 001011 231 001013 232 001015 234 001037 237 001061 238 001073 240 001121 242 001145 243 001163 245 001164 248 001174 250 001204 253 001213 255 001225 256 001226 259 001252 262 001324 263 001331 264 001351 266 001352 268 001364 269 001365 271 001411 274 001461 275 001462 277 001502 278 001520 280 001521 282 001533 283 001534 285 001560 287 001606 288 001624 290 001625 292 001644 293 001645 295 001672 296 001710 297 001712 299 001713 301 001720 302 001722 304 001723 306 001730 307 001731 309 001754 310 002021 312 002043 313 002046 315 002047 316 002076 318 002101 320 002133 322 002161 325 002207 328 002241 331 002266 333 002305 335 002307 336 002310 337 002313 339 002327 340 002332 341 002336 342 002341 343 002344 344 002351 345 002361 346 002366 347 002373 348 002400 358 002401 359 002415 420 002433 421 002434 423 002456 424 002457 425 002463 426 002465 427 002471 428 002474 429 002503 430 002504 432 002505 485 002506 488 002523 490 002524 492 002530 494 002534 495 002556 496 002557 497 002562 498 002563 499 002570 500 002572 501 002574 502 002602 504 002610 505 002612 506 002613 508 002614 520 002615 523 002633 525 002634 528 002652 529 002655 532 002656 533 002670 581 002672 582 002714 584 002715 585 002721 586 002726 587 002730 588 002733 590 002736 591 002744 592 002745 593 002746 595 002756 598 003020 601 003060 604 003115 605 003116 614 003117 617 003132 619 003133 621 003142 648 003150 649 003172 651 003173 652 003176 653 003202 654 003205 655 003211 657 003213 659 003221 660 003222 665 003223 670 003236 673 003242 675 003246 676 003251 678 003252 679 003261 680 003267 684 003271 685 003275 688 003301 689 003331 690 003343 693 003357 694 003371 695 003401 701 003402 703 003416 942 003424 362 003425 368 003436 369 003445 372 003450 374 003454 375 003461 378 003462 380 003465 383 003565 385 003570 386 003575 390 003576 391 003600 393 003601 395 003603 396 003610 399 003611 400 003617 402 003622 403 003627 407 003630 408 003637 410 003642 411 003647 416 003650 435 003651 438 003652 453 004002 458 004003 465 004017 467 004065 469 004146 471 004152 472 004157 536 004162 542 004164 544 004170 545 004171 546 004201 552 004205 555 004232 558 004235 561 004255 563 004260 564 004270 568 004271 570 004331 572 004334 573 004344 576 004345 623 004346 630 004350 633 004376 636 004422 639 004443 641 004462 643 004477 646 004514 711 004515 716 004523 718 004535 721 004536 731 004544 732 004545 733 004550 735 004572 738 004573 741 004574 748 004601 749 004603 750 004605 751 004612 752 004614 753 004615 754 004631 758 004637 759 004641 760 004657 764 004700 765 004703 770 004704 775 004706 780 004707 782 004712 783 004715 784 004750 786 004751 788 004761 789 004764 792 004765 793 004770 796 005023 798 005024 803 005026 804 005027 805 005042 807 005046 808 005050 809 005053 810 005056 811 005061 813 005073 814 005076 815 005101 817 005117 824 005132 828 005143 829 005144 831 005145 833 005147 835 005162 836 005165 838 005166 840 005171 842 005207 845 005212 846 005250 848 005253 850 005256 851 005261 854 005262 855 005265 856 005270 859 005271 862 005277 864 005304 865 005306 866 005311 867 005313 870 005330 872 005350 873 005364 874 005377 877 005403 880 005404 883 005412 886 005437 889 005442 892 005461 894 005462 897 005463 898 005464 899 005471 900 005473 901 005474 905 005475 908 005503 910 005510 912 005520 914 005532 915 005535 917 005536 919 005537 921 005554 922 005555 924 005556 926 005570 ----------------------------------------------------------- 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