COMPILATION LISTING OF SEGMENT ws_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1117.73_Tue_mdt 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-04-04,Smith), approve(87-07-15,MCR7580), 11* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 12* Coded execute_command 13* 2) change(86-04-15,Flegel), approve(87-07-15,MCR7580), 14* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 15* Coded create_instance, destroy_instance 16* 3) change(86-04-17,Flegel), approve(87-07-15,MCR7580), 17* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 18* Coded find_capability_name, find_capability_number 19* 4) change(86-04-30,Smith), approve(87-07-15,MCR7580), 20* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 21* Coded execute_capability 22* 5) change(86-06-11,Smith), approve(87-07-15,MCR7580), 23* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 24* Coded suspend_capability, resume_capability, terminate_capability 25* 6) change(86-06-23,Smith), approve(87-07-15,MCR7580), 26* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 27* Coded reset_capability, put_background_message 28* 7) change(86-07-01,Smith), approve(87-07-15,MCR7580), 29* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 30* Coded connect_request, connect_response, get_status, put_status, sleep, 31* disconnect_request, disconnect_response 32* 8) change(86-10-22,Smith), approve(87-07-15,MCR7580), 33* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 34* Modified connect_request so that capability is created is it doesn't 35* already exist. 36* 9) change(86-10-22,Smith), approve(87-07-15,MCR7580), 37* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 38* Mofidied destroy instance so that capability name not sent in 39* delete_from_remote_cat_ message. 40* 10) change(86-11-07,Flegel), approve(87-07-15,MCR7580), 41* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 42* Changed put_background_message to split long messages into multiple 43* pieces up to a length of MAXIMUM_BG_SIZE (mowse.incl.pl1). 44* 11) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 45* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 46* Approved. 47* 12) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 48* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 49* If a long message is pending from the caller to execute_capability, an 50* error code is returned because MOWSE protocol will not provide for 51* multiple pending long messages. 52* 13) change(86-12-05,Flegel), approve(86-12-05,MCR7580), 53* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 54* Added chacks fo null MOWSE tables, if it occurs, then a new_process is 55* generated. 56* 14) change(86-12-10,Flegel), approve(86-12-10,MCR7580), 57* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 58* Replaced signalling of mowse_fatal_error with a call to fatal_mowse_trap_ 59* END HISTORY COMMENTS */ 60 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 61 ws_: 62 proc (); 63 64 65 /* : PROCEDURE FUNCTION 66* 67*MOWSE Subroutine Library which provides a means with which applications can 68*communicate with MOWSE. 69* 70*Entry Points: 71* 72* connect_request connect_response 73* create_instance destroy_instance 74* disconnect_request disconnect_response 75* execute_capability execute_command 76* find_capability_name find_capability_number 77* get_background_message get_status 78* put_background_message resume_capability 79* send_query_reply sleep 80* suspend_capability terminate_capability 81**/ 82 83 /* */ 84 85 /* INPUT PARAMETERS */ 86 dcl p_args char (*) parameter; 87 dcl p_reply_string char (*) parameter; 88 dcl p_status fixed bin parameter; 89 dcl p_capability_number fixed bin parameter; 90 dcl p_time fixed bin (35) parameter; 91 dcl p_status_result char (*) parameter; 92 dcl p_status_request char (*) parameter; 93 dcl p_capability_name char (*) parameter; 94 dcl p_command char (*) parameter; 95 dcl p_data_block_ptr ptr parameter; 96 dcl p_data_len fixed bin (17) parameter; 97 dcl p_data_ptr ptr parameter; 98 dcl p_entry_name char (*) parameter; 99 dcl p_inbuff_length fixed bin (17) parameter; 100 dcl p_major fixed bin (17) parameter; 101 dcl p_mcb_ptr ptr parameter; 102 dcl p_minor fixed bin (17) parameter; 103 dcl p_outbuff_length fixed bin (17) parameter; 104 dcl p_system fixed bin (17) parameter; 105 106 107 /* OUTPUT PARAMETERS */ 108 dcl p_cmd_id fixed bin (17) parameter; 109 dcl p_code fixed bin (35) parameter; 110 111 /* MISC VARIABLES */ 112 dcl connect_request_len fixed bin (17); 113 dcl connect_request_string char (MAXIMUM_PACKET_SIZE); 114 dcl arguments char (MAXIMUM_PACKET_SIZE - 33) var; 115 dcl capname char (32) var; 116 dcl mowse_mcb_ptr ptr; 117 dcl mowse_iocb_ptr ptr; 118 dcl temp_major fixed bin; 119 dcl sysid fixed bin; 120 dcl search_name char (32); /* Temporary name for cap */ 121 dcl mowse_info_ptr ptr; /* Pointer to mowse info structure */ 122 dcl temp_mcb_ptr ptr; 123 dcl temp_char char; 124 dcl minor_num fixed bin; /* minor capability number */ 125 dcl first_byte fixed bin; 126 dcl longinfo_length fixed bin; /* length of error_table_ longinofo */ 127 dcl longinfo char (100) aligned; /* longinfo status string */ 128 dcl shortinfo char (8) aligned; /* shortinfo status string */ 129 130 dcl formatted_string char (MAXIMUM_BG_SIZE); /* generated formatted string */ 131 dcl formatted_string_length 132 fixed bin; /* length of string generated by ioa_ call */ 133 dcl result_string char (MAXIMUM_BG_SIZE); /* generated result string */ 134 dcl result_string_length fixed bin; /* length of result string */ 135 136 dcl arg_ptr ptr; /* pointer to general argument */ 137 dcl arg_len fixed bin (21); /* length of arguments */ 138 dcl caller_name_length fixed bin (21); /* length of caller name */ 139 dcl based_caller_name char (32) based (arg_ptr); /* overlay for caller's name */ 140 dcl caller_name char (32); /* caller's name as in com_err_ */ 141 dcl based_code fixed bin based (arg_ptr); /* overlay for code */ 142 dcl based_mcb_ptr ptr based (arg_ptr); /* overlay for mcb_ptr */ 143 dcl arg_list_ptr ptr; /* pointer to arg list used in put_background_message */ 144 dcl errcode fixed bin (35); 145 dcl arg_count fixed bin; 146 dcl system_free_area area based (system_free_area_ptr); 147 /* area used for the allocation of mowse structures */ 148 dcl system_free_area_ptr ptr; 149 dcl cap_index fixed bin (17); /* index into CAT tables */ 150 dcl cap_num fixed bin (17); /* index into CAT tables or a major capability */ 151 dcl destination fixed bin (17); /* major capability */ 152 dcl ecode fixed bin (35); 153 dcl entry_point entry variable; 154 dcl i fixed bin (17); 155 dcl in_space char ( 156 get_buff_length (p_inbuff_length, 157 MINIMUM_BUFFER_SIZE, MAXIMUM_BUFFER_SIZE)) based; 158 /* space for application buffers */ 159 dcl major_num fixed bin (17); /* capability number */ 160 dcl message_str char (MAXIMUM_PACKET_SIZE); 161 /* MOWSE system id */ 162 dcl source_major fixed bin (17); 163 dcl source_system fixed bin (17); 164 dcl temp_buff_ptr ptr; 165 dcl input_buffer_length fixed bin; 166 dcl input_buffer_data char (input_buffer_length) based (temp_buff_ptr); 167 /* temporary application buffers */ 168 169 /* STRUCTURES */ 170 171 dcl 01 mio_info like mowse_io_info automatic; 172 /* Automatic mowse info */ 173 dcl 01 mio_sleep like mowse_io_sleep_info automatic; 174 /* Automatic sleep info structure */ 175 /* used by create_instance to compose message destined for add_to_remote_cat_ 176* (internal mowse routine) */ 177 178 dcl 01 alter_remote_cat_msg, 179 02 major char (1) unal, 180 02 major_name char (CAPABILITY_NAME_LENGTH) unal; 181 182 /* SYSTEM CALLS */ 183 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 184 dcl iox_$close entry (ptr, fixed bin (35)); 185 dcl terminate_process_ entry (char (*), ptr); 186 dcl com_err_$convert_status_code_ 187 entry (fixed bin (35), char (8) aligned, 188 char (100) aligned); 189 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), 190 fixed bin (21), bit (1) aligned, bit (1) aligned); 191 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), 192 fixed bin (35)); 193 dcl cu_$arg_list_ptr entry (ptr); 194 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 195 dcl get_system_free_area_ entry () returns (ptr); 196 dcl hcs_$make_entry entry (ptr, char (*), char (*), entry, 197 fixed bin (35)); 198 199 /* SYSTEM CALL SUPPORT */ 200 dcl ws_error_$invalid_sleep_interval 201 fixed bin (35) ext static; 202 dcl ws_error_$inconsistent_mowse_tables 203 fixed bin (35) ext static; 204 dcl error_table_$unimplemented_version 205 fixed bin (35) ext static; 206 dcl error_table_$no_table fixed bin (35) ext static; 207 dcl ws_error_$invalid_connect_status 208 fixed bin (35) ext static; 209 dcl ws_error_$not_available 210 fixed bin (35) ext static; 211 dcl ws_error_$sleeping fixed bin (35) ext static; 212 dcl ws_error_$cant_create_instance 213 fixed bin (35) ext static; 214 dcl ws_error_$invalid_minor_capability 215 fixed bin (35) ext static; 216 dcl ws_error_$suspended fixed bin (35) ext static; 217 dcl ws_error_$not_suspended 218 fixed bin (35) ext static; 219 dcl ws_error_$invalid_capability_name 220 fixed bin (35) ext static; 221 dcl ws_error_$invalid_capability_number 222 fixed bin (35) ext static; 223 dcl ws_error_$invalid_mcb fixed bin (35) ext static; 224 dcl ws_error_$invalid_system_id 225 fixed bin (35) ext static; 226 dcl ws_error_$buffer_overflow 227 fixed bin (35) ext static; 228 229 /* EXTERNAL CALLS */ 230 dcl send_mowse_message_ entry (ptr, fixed bin, fixed bin, fixed bin, 231 fixed bin, fixed bin, fixed bin, ptr, fixed bin, 232 fixed bin, fixed bin (35)); 233 dcl find_mowse_io_ entry (ptr, fixed bin (35)); 234 dcl get_mowse_info_ptr_ entry (ptr, ptr, fixed bin (35)); 235 dcl send_msg_ entry (ptr, fixed bin, fixed bin, ptr, fixed bin, 236 fixed bin, fixed bin (35)); 237 dcl capability_$unpack entry (fixed bin, fixed bin, fixed bin, 238 fixed bin (35)); 239 dcl capability_$pack entry (fixed bin, fixed bin, fixed bin, 240 fixed bin (35)); 241 dcl find_free_cat_entry_ entry (ptr, fixed bin, fixed bin (35)); 242 dcl release_outbuffer_ entry (ptr); 243 dcl fatal_mowse_trap_ entry (fixed bin (35)); 244 245 /* EXTERNAL CALL SUPPORT */ 246 247 /* BUILTINS */ 248 dcl min builtin; 249 dcl null builtin; 250 dcl addr builtin; 251 dcl byte builtin; 252 dcl length builtin; 253 dcl round builtin; 254 dcl rtrim builtin; 255 dcl substr builtin; 256 257 /* CONDITIONS */ 258 259 /* CONSTANTS */ 260 dcl VERSION char (8) int static options (constant) 261 init ("version1"); 262 dcl CMD_ID_CNT fixed bin int static init (1); 263 dcl TRUE bit (1) int static options (constant) init ("1"b); 264 dcl FALSE bit (1) int static options (constant) init ("0"b); 265 266 /* */ 267 /* INITIALIZATION */ 268 269 /* MAIN */ 270 return; 271 272 /* */ 273 274 /* ENTRY POINTS */ 275 276 /* : *** Entry: connect_request - internal entry for ws_ ****/ 277 278 /* ENTRY FUNCTION 279* 280*Request a connection to an application. 281**/ 282 283 connect_request: 284 entry (p_capability_name, p_args, p_system, p_mcb_ptr, p_code); 285 286 p_code = 0; 287 288 /* : check mcb pointer */ 289 290 call check_mcb_ptr (p_mcb_ptr, p_code); 291 if p_code ^= 0 then 292 return; 293 294 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 295 capname = p_capability_name; 296 capname = rtrim (capname); 297 connect_request_string = capname; 298 connect_request_len = length (capname); 299 arguments = p_args; 300 301 if (length (rtrim (arguments)) ^= 0) then do; 302 connect_request_string = capname || " " || rtrim (arguments); 303 connect_request_len = length (capname) + 1 + 304 length (rtrim (arguments)); 305 end; 306 307 call capability_$pack (p_system, INTERNAL, destination, p_code); 308 if p_code ^= 0 then 309 return; 310 311 call send_msg_ (p_mcb_ptr, destination, REQUEST_CONNECT, 312 addr (connect_request_string), connect_request_len, BG, p_code); 313 if p_code ^= 0 then do; 314 call fatal_mowse_trap_ (p_code); 315 return; 316 end; 317 318 return; 319 320 /* */ 321 322 /* : *** Entry: connect_response - internal entry for ws_ *** */ 323 324 /* : ENTRY FUNCTION 325* 326*Allows an application to respond to a connect request from some application. 327**/ 328 329 connect_response: 330 entry (p_status, p_major, p_mcb_ptr, p_code); 331 332 p_code = 0; 333 334 call check_mcb_ptr (p_mcb_ptr, p_code); 335 if p_code ^= 0 then 336 return; 337 338 /* : check major capability_number */ 339 340 call capability_$unpack (sysid, major_num, p_major, p_code); 341 if p_code ^= 0 then 342 return; 343 344 /* : check the status being sent as response */ 345 346 if (p_status ^= ACCEPT) & (p_status ^= REJECT) then do; 347 p_code = ws_error_$invalid_connect_status; 348 return; 349 end; 350 351 call verify_capability (p_mcb_ptr -> mcb.mowse_info_ptr, 352 p_major, p_code); 353 if p_code ^= 0 then 354 return; 355 356 /* : Send RESPONSE DISCONNECT message with status as data */ 357 358 temp_char = byte (p_status); 359 call send_msg_ (p_mcb_ptr, p_major, RESPONSE_CONNECT, 360 addr (temp_char), 1, BG, p_code); 361 if p_code ^= 0 then do; 362 call fatal_mowse_trap_ (p_code); 363 return; 364 end; 365 366 return; 367 368 /* */ 369 370 /* : *** Entry: create_instance - internal entry for ws_ *** */ 371 372 /* : ENTRY FUNCTION 373* 374*Register the calling routine with MOWSE by assigning it a major capability 375*number and adding it to MOWSE's capability table. The calling routine must 376*supply the name by which it is to be known to MOWSE, and the entry point 377*describing where it is to be invoked by an execute capability. 378**/ 379 380 /* : NOTES 381* 382*All applications which expect to receive messages must have registered with 383*MOWSE (through create_instance) in order to receive messages. A message is 384*provided to the application when a the destination of the message specifies 385*the major capability number of the application. The application will then be 386*invoked at the entry name provided with the message (argument data), its 387*length, and a pointer to the applications data_block as follows: 388* 389* application_$entry_point (minor_capability, major_sender, 390* arg_ptr, arg_len, p_mcb_ptr, data_blk_ptr); 391* 392*The buffers inbuff and outbuff allow MOWSE to send and receive messages 393*longer than one communications packet defined by PACKET_SIZE) in a manner 394*transparent to the capability. 395**/ 396 397 create_instance: 398 entry (p_capability_name, p_entry_name, p_inbuff_length, 399 p_outbuff_length, p_data_block_ptr, p_mcb_ptr, p_code); 400 401 p_code = 0; 402 cap_index = 0; 403 404 /* : Get mowse info required before allocation of new mcb */ 405 406 /* : - get mowse iocb_ptr */ 407 call find_mowse_io_ (mowse_iocb_ptr, p_code); 408 if p_code ^= 0 then 409 return; 410 411 /* : - get mowse mcb_ptr */ 412 mio_info.version = mowse_io_info_version_1; 413 call iox_$control (mowse_iocb_ptr, "get_mowse_info", 414 addr (mio_info), p_code); 415 if p_code ^= 0 then 416 return; 417 mowse_mcb_ptr = mio_info.mcb_ptr; 418 419 /* : - get mowse info_ptr */ 420 421 call get_mowse_info_ptr_ (mowse_mcb_ptr, mowse_info_ptr, p_code); 422 if p_code ^= 0 then 423 return; 424 425 if mowse_info_ptr = null then 426 call null_mowse_info_handler (); 427 428 if mowse_info_ptr -> mowse_info.version ^= VERSION then do; 429 p_code = error_table_$unimplemented_version; 430 return; 431 end; 432 433 /* : If no free entry in local CAT, return error */ 434 435 call find_free_cat_entry_ (mowse_info_ptr, cap_index, p_code); 436 if (p_code ^= 0) then 437 return; 438 439 /* : Create entry point call hcs_$make_entry */ 440 441 call hcs_$make_entry (null, p_capability_name, p_entry_name, 442 entry_point, p_code); 443 if (p_code ^= 0) then 444 return; 445 446 /* : Make major_capability number */ 447 448 call capability_$pack (LOCAL_SYSTEM, cap_index, cap_num, p_code); 449 if (p_code ^= 0) then do; 450 p_code = ws_error_$cant_create_instance; 451 return; 452 end; 453 454 /* : allocate MCB */ 455 456 system_free_area_ptr = get_system_free_area_ (); 457 allocate mcb in (system_free_area) set (p_mcb_ptr); 458 459 /* : Set mcb_ptr stored in the local CAT table */ 460 461 mowse_info_ptr -> mowse_info.local_cat (cap_index).mcb_ptr = 462 p_mcb_ptr; 463 464 /* : Initialize CAT flags */ 465 466 mowse_info_ptr -> mowse_info.local_cat (cap_index).flags.reset 467 = "0"b; 468 mowse_info_ptr -> mowse_info.local_cat (cap_index).flags.suspended 469 = "0"b; 470 mowse_info_ptr -> mowse_info.local_cat (cap_index).flags.status 471 = "0"b; 472 mowse_info_ptr -> mowse_info.local_cat (cap_index).sleep_time 473 = 0; 474 475 /* : Initialize the mcb */ 476 477 p_mcb_ptr -> mcb.version = VERSION; 478 p_mcb_ptr -> mcb.iocb_ptr = mowse_iocb_ptr; 479 p_mcb_ptr -> mcb.major_capability = cap_num; 480 p_mcb_ptr -> mcb.capability_name = p_capability_name; 481 p_mcb_ptr -> mcb.entry_var = entry_point; 482 p_mcb_ptr -> mcb.data_block_ptr = p_data_block_ptr; 483 484 allocate in_space in (system_free_area) 485 set (p_mcb_ptr -> mcb.inbuff); 486 p_mcb_ptr -> mcb.inbuff_length 487 = 488 get_buff_length (p_inbuff_length, MINIMUM_BUFFER_SIZE, 489 MAXIMUM_BUFFER_SIZE); 490 p_mcb_ptr -> mcb.inbuff_position_index = 0; 491 p_mcb_ptr -> mcb.inbuff_data_length = 0; 492 493 p_mcb_ptr -> mcb.outbuff_length 494 = 495 get_buff_length (p_outbuff_length, MINIMUM_BUFFER_SIZE, 496 MAXIMUM_BUFFER_SIZE); 497 498 p_mcb_ptr -> mcb.outbuff_list_start = null; 499 p_mcb_ptr -> mcb.outbuff_list_end = null; 500 p_mcb_ptr -> mcb.mowse_info_ptr = mowse_info_ptr; 501 502 /* : Send ADD_TO_REMOTE_CAT message to remote 503* capability_number + capability_name (not padded) */ 504 505 alter_remote_cat_msg.major = byte (cap_index); 506 alter_remote_cat_msg.major_name = 507 substr (p_capability_name, 1, length (p_capability_name)); 508 call capability_$pack (REMOTE_SYSTEM, INTERNAL, destination, 509 p_code); 510 call send_msg_ (mowse_mcb_ptr, destination, ADD_TO_REMOTE_CAT, 511 addr (alter_remote_cat_msg), length (p_capability_name) + 1, 512 BG, p_code); 513 514 if p_code ^= 0 then do; 515 p_code = ws_error_$cant_create_instance; 516 free p_mcb_ptr -> mcb; 517 p_mcb_ptr = null; 518 mowse_info_ptr -> mowse_info.local_cat (cap_index).mcb_ptr 519 = null; 520 end; 521 522 return; 523 524 /* */ 525 526 527 /* : *** Entry: destroy_instance - internal entry for ws_ *** */ 528 529 /* : ENTRY FUNCTION 530* 531*Remove all reference to the calling application from MOWSE. This will include 532*freeing all MOWSE associated buffers and control information blocks. 533**/ 534 535 destroy_instance: 536 entry (p_mcb_ptr, p_code); 537 538 p_code = 0; 539 540 call check_mcb_ptr (p_mcb_ptr, p_code); 541 if p_code ^= 0 then 542 return; 543 544 /* : Get capability index */ 545 call capability_$unpack (sysid, cap_index, 546 p_mcb_ptr -> mcb.major_capability, p_code); 547 548 /* : Get mowse info pointer */ 549 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 550 551 /* : send DELETE_FROM_REMOTE_CAT message to remote system 552* {capability_number} */ 553 554 alter_remote_cat_msg.major = byte (cap_index); 555 call capability_$pack (REMOTE_SYSTEM, INTERNAL, destination, 556 p_code); 557 558 call send_msg_ (p_mcb_ptr, destination, DELETE_FROM_REMOTE_CAT, 559 addr (alter_remote_cat_msg.major), 1, BG, p_code); 560 561 if p_code ^= 0 then do; 562 call fatal_mowse_trap_ (p_code); 563 return; 564 end; 565 566 /* : Free message buffers and mcb */ 567 568 temp_buff_ptr = p_mcb_ptr -> mcb.inbuff; 569 input_buffer_length = p_mcb_ptr -> mcb.inbuff_data_length; 570 free input_buffer_data; 571 temp_buff_ptr = null; 572 p_mcb_ptr -> mcb.inbuff = null; 573 574 call release_outbuffer_ (p_mcb_ptr); 575 576 free p_mcb_ptr -> mcb; 577 p_mcb_ptr = null; 578 mowse_info_ptr -> mowse_info.local_cat (cap_index).mcb_ptr = 579 null; 580 581 p_code = 0; 582 return; 583 584 /* */ 585 586 /* : *** Entry: disconnect_request - internal entry for ws_ *** */ 587 588 /* : ENTRY FUNCTION 589* 590*Request a disconnection to an application. 591**/ 592 593 disconnect_request: 594 entry (p_capability_number, p_mcb_ptr, p_code); 595 596 p_code = 0; 597 598 call check_mcb_ptr (p_mcb_ptr, p_code); 599 if p_code ^= 0 then 600 return; 601 602 /* : check the capability_number */ 603 604 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 605 call verify_capability (mowse_info_ptr, p_capability_number, p_code); 606 if p_code ^= 0 then 607 return; 608 609 /* : Send the REQUEST_DISCONNECT message */ 610 611 call send_msg_ (p_mcb_ptr, p_capability_number, 612 REQUEST_DISCONNECT, null, 0, BG, p_code); 613 if p_code ^= 0 then do; 614 call fatal_mowse_trap_ (p_code); 615 return; 616 end; 617 618 return; 619 620 /* */ 621 622 /* : *** Entry: disconnect_response - internal entry for ws_ *** */ 623 624 /* : ENTRY FUNCTION 625* 626*Allows some application to responds to a disconnect request from some 627*application. 628**/ 629 630 disconnect_response: 631 entry (p_status, p_major, p_mcb_ptr, p_code); 632 633 p_code = 0; 634 635 call check_mcb_ptr (p_mcb_ptr, p_code); 636 if p_code ^= 0 then 637 return; 638 639 /* : check the response to request */ 640 641 if (p_status ^= ACCEPT) & (p_status ^= REJECT) then do; 642 p_code = ws_error_$invalid_connect_status; 643 return; 644 end; 645 646 /* : verify that the capability for which the response is destined exists */ 647 648 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 649 call verify_capability (mowse_info_ptr, p_major, p_code); 650 if p_code ^= 0 then 651 return; 652 653 /* : Send message containing response to requesting application */ 654 655 temp_char = byte (p_status); 656 call send_msg_ (p_mcb_ptr, p_major, RESPONSE_DISCONNECT, 657 addr (temp_char), 1, BG, p_code); 658 if p_code ^= 0 then do; 659 call fatal_mowse_trap_ (p_code); 660 return; 661 end; 662 663 return; 664 665 /* */ 666 667 /* : *** Entry: execute_capability - internal entry for ws_ *** */ 668 669 /* ENTRY FUNCTION 670* 671*Executes a loaded capability locally or remotely. 672**/ 673 674 execute_capability: 675 entry (p_major, p_minor, p_data_ptr, p_data_len, p_mcb_ptr, p_code); 676 677 /* : Look up major_capability number in the local and remote CAT tables. */ 678 679 p_code = 0; 680 681 call check_mcb_ptr (p_mcb_ptr, p_code); 682 if p_code ^= 0 then 683 return; 684 685 call capability_$unpack (sysid, major_num, p_major, p_code); 686 if p_code ^= 0 then 687 return; 688 689 /* : Get mowse info pointer */ 690 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 691 692 /* : Check if minor is valid */ 693 694 if p_minor < MINIMUM_USER_MINOR | p_minor > MAXIMUM_USER_MINOR 695 then do; 696 p_code = ws_error_$invalid_minor_capability; 697 return; 698 end; 699 700 /* : Check that the capability being executed exists */ 701 702 call verify_capability (mowse_info_ptr, p_major, p_code); 703 if p_code ^= 0 then 704 return; 705 706 /* : Check if capability to be executed has been suspended or reset 707* and the minor is not one of the dedicated (system) minors. 708* If it is then return ws_error_$suspended */ 709 710 if sysid = LOCAL_SYSTEM then do; 711 if ((mowse_info_ptr 712 -> mowse_info.local_cat (major_num).flags.reset) 713 | (mowse_info_ptr 714 -> mowse_info.local_cat (major_num).flags.suspended) 715 & ^(p_minor < MINIMUM_USER_MINOR)) then do; 716 717 p_code = ws_error_$suspended; 718 return; 719 end; 720 end; 721 else if 722 ((mowse_info_ptr 723 -> mowse_info.remote_cat (major_num).flags.reset) 724 | (mowse_info_ptr 725 -> mowse_info.remote_cat (major_num).flags.suspended) 726 & ^(p_minor < MINIMUM_USER_MINOR)) then do; 727 728 p_code = ws_error_$suspended; 729 return; 730 end; 731 732 /* : Check if the capability is sleeping. 733* - If it is then return ws_error_$sleeping */ 734 735 if sysid = LOCAL_SYSTEM then do; 736 if (mowse_info_ptr 737 -> mowse_info.local_cat (major_num).sleep_time ^= 0) 738 then do; 739 p_code = ws_error_$sleeping; 740 return; 741 end; 742 end; 743 else if (mowse_info_ptr 744 -> mowse_info.remote_cat (major_num).sleep_time ^= "0"b) 745 then do; 746 p_code = ws_error_$sleeping; 747 return; 748 end; 749 750 /* : If the buffer is too small to handle that the information 751* then return with p_code set to ws_error_$buffer_overflow 752* OR if the message to be sent is long and there is a pending message in 753* the outbuffer, return buffer overflow because protocol will not allow for 754* more than one pending message */ 755 756 if p_data_len > p_mcb_ptr -> mcb.outbuff_length 757 | (p_data_len > PACKET_SIZE - 6 758 & p_mcb_ptr -> mcb.outbuff_list_start ^= null) 759 then do; 760 p_code = ws_error_$buffer_overflow; 761 return; 762 end; 763 764 /* : Send message to the capability to be executed */ 765 766 call send_msg_ (p_mcb_ptr, p_major, p_minor, p_data_ptr, 767 p_data_len, BG, p_code); 768 if p_code ^= 0 then do; 769 call fatal_mowse_trap_ (p_code); 770 return; 771 end; 772 773 return; 774 775 /* */ 776 777 /* : *** Entry: execute_command - internal entry for ws_ *** */ 778 779 /* ENTRY FUNCTION 780* 781*Performs the execution of a command on either the remote or local systems. 782**/ 783 784 execute_command: 785 entry (p_command, p_system, p_cmd_id, p_mcb_ptr, p_code); 786 787 p_code = 0; 788 789 call check_mcb_ptr (p_mcb_ptr, p_code); 790 if p_code ^= 0 then 791 return; 792 793 /* : Check for valid system */ 794 if p_system ^= LOCAL_SYSTEM & p_system ^= REMOTE_SYSTEM then do; 795 p_code = ws_error_$invalid_system_id; 796 return; 797 end; 798 799 /* : Get mowse_info_ptr */ 800 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 801 802 /* : Check for command which are too long */ 803 if length (p_command) > PACKET_SIZE - 2 then do; 804 p_code = ws_error_$buffer_overflow; 805 return; 806 end; 807 808 /* : Generate unique command identification number. */ 809 p_cmd_id = CMD_ID_CNT; 810 CMD_ID_CNT = CMD_ID_CNT + 1; 811 812 /* : If the system was local then execute command locally */ 813 if p_system = LOCAL_SYSTEM then 814 call capability_$pack (LOCAL_SYSTEM, INTERNAL, destination, 815 p_code); 816 else 817 call capability_$pack (REMOTE_SYSTEM, INTERNAL, destination, 818 p_code); 819 if p_code ^= 0 then 820 return; 821 822 /* : formulate message to be sent to remote or local mowse internal */ 823 824 first_byte = round ((p_cmd_id / 256), 0); 825 message_str = 826 byte (first_byte) 827 || byte ((p_cmd_id - (first_byte * 256))) || p_command; 828 829 /* : send message to destination */ 830 call send_msg_ (p_mcb_ptr, destination, EXECUTE_COMMAND, 831 addr (message_str), length (p_command) + 2, BG, p_code); 832 if p_code ^= 0 then do; 833 call fatal_mowse_trap_ (p_code); 834 return; 835 end; 836 837 return; 838 839 /* */ 840 841 /* : *** Entry: find_capability_name - internal entry for ws_ *** */ 842 843 /* : ENTRY FUNCTION 844* 845*Find the name of a capability given its major capability number. 846**/ 847 848 find_capability_name: 849 entry (p_major, p_capability_name, p_code); 850 851 p_code = 0; 852 853 call find_mowse_io_ (mowse_iocb_ptr, p_code); 854 if p_code ^= 0 then 855 return; 856 857 mio_info.version = mowse_io_info_version_1; 858 call iox_$control (mowse_iocb_ptr, "get_mowse_info", 859 addr (mio_info), p_code); 860 if p_code ^= 0 then 861 return; 862 mowse_info_ptr = mio_info.info_ptr; 863 if mowse_info_ptr = null then 864 call null_mowse_info_handler (); 865 866 /* : Extract the system id and CAT index */ 867 868 call capability_$unpack (sysid, cap_num, p_major, p_code); 869 if (p_code ^= 0) then do; 870 p_code = ws_error_$invalid_capability_number; 871 return; 872 end; 873 874 /* : If system is LOCAL_SYSTEM then 875* - Check for validity 876* - Invalid CAT index or inactive mcb return invalid_capability_number */ 877 878 if (sysid = LOCAL_SYSTEM) then do; 879 if (cap_num < MINIMUM_CAT_ENTRY) 880 | (cap_num > MAXIMUM_CAT_ENTRY) then do; 881 p_code = ws_error_$invalid_capability_number; 882 return; 883 end; 884 885 if (mowse_info_ptr 886 -> mowse_info.local_cat (cap_num).mcb_ptr = null) 887 then do; 888 p_code = ws_error_$invalid_capability_number; 889 return; 890 end; 891 892 /* : get the name */ 893 894 p_capability_name = 895 mowse_info_ptr 896 -> mowse_info.local_cat (cap_num).mcb_ptr 897 -> mcb.capability_name; 898 return; 899 end; 900 901 /* : Else search remote CAT */ 902 903 i = cap_num; 904 do while ((i < MAXIMUM_CAT_ENTRY + 1) & 905 (mowse_info_ptr 906 -> mowse_info.remote_cat (i).major_capability ^= p_major)); 907 i = i + 1; 908 end; 909 910 /* : if not found or inactive return invalid_capability_number */ 911 if (i > MAXIMUM_CAT_ENTRY) then do; 912 p_code = ws_error_$invalid_capability_number; 913 return; 914 end; 915 916 /* : Otherwise, return the name */ 917 p_capability_name = 918 mowse_info_ptr 919 -> mowse_info.remote_cat (i).capability_name; 920 p_code = 0; 921 return; 922 923 /* */ 924 925 /* : *** Entry: find_capability_number - internal entry for ws_ *** */ 926 927 /* : ENTRY FUNCTION 928* 929*Find the major capability number of an application given a capability name. 930**/ 931 932 /* : NOTES 933* 934*MOWSE looks for the capability name in its capability table in the following 935*fashion: 936* 1) If the provided major capability number is invalid, 937* MOWSE will begin searching from the top of the specified system 938* table. 939* 2) If the major capability number is valid, MOWSE will 940* begin searching from the next entry in the table specified by 941* the system. 942**/ 943 944 find_capability_number: 945 entry (p_capability_name, p_system, p_major, p_code); 946 947 p_code = 0; 948 949 /* : Make sure requested system is acceptable */ 950 951 if p_system ^= LOCAL_SYSTEM & p_system ^= REMOTE_SYSTEM then do; 952 p_code = ws_error_$invalid_system_id; 953 return; 954 end; 955 956 /* : Get MOWSE information for CATs */ 957 958 call find_mowse_io_ (mowse_iocb_ptr, p_code); 959 if p_code ^= 0 then 960 return; 961 962 mio_info.version = mowse_io_info_version_1; 963 call iox_$control (mowse_iocb_ptr, "get_mowse_info", 964 addr (mio_info), p_code); 965 if p_code ^= 0 then 966 return; 967 968 mowse_info_ptr = mio_info.info_ptr; 969 if mowse_info_ptr = null then 970 call null_mowse_info_handler (); 971 972 call capability_$unpack (sysid, cap_index, p_major, p_code); 973 if p_code ^= 0 then 974 cap_index = MINIMUM_CAT_ENTRY - 1; 975 976 /* : Search through the CAT specified by the system id sequentially */ 977 978 p_code = 0; 979 do cap_index = cap_index + 1 to MAXIMUM_CAT_ENTRY; 980 if p_system = LOCAL_SYSTEM then do; 981 if mowse_info_ptr 982 -> mowse_info.local_cat (cap_index).mcb_ptr 983 ^= null then do; 984 search_name = 985 mowse_info_ptr 986 -> mowse_info.local_cat (cap_index).mcb_ptr 987 -> mcb.capability_name; 988 temp_major = 989 mowse_info_ptr 990 -> mowse_info.local_cat (cap_index).mcb_ptr 991 -> mcb.major_capability; 992 end; 993 else 994 search_name = ""; 995 end; 996 else do; 997 search_name = 998 mowse_info_ptr 999 -> mowse_info.remote_cat (cap_index) 1000 .capability_name; 1001 temp_major = 1002 mowse_info_ptr 1003 -> mowse_info.remote_cat (cap_index) 1004 .major_capability; 1005 end; 1006 1007 if p_capability_name = rtrim (search_name) then do; 1008 p_major = temp_major; 1009 return; 1010 end; 1011 end; 1012 1013 /* : Nothing was found, return invalid_capability_name */ 1014 1015 p_code = ws_error_$invalid_capability_name; 1016 return; 1017 1018 /* */ 1019 1020 /* : *** Entry: get_background_message - internal entry for ws_ *** */ 1021 1022 /* : ENTRY FUNCTION 1023* 1024*This entry point include for consistency with MTB741 but can never be used 1025*in this implementatiuon of MOWSE 1026* 1027*NOT AVAILABLE (Can only be use by foreground applications. This implementation 1028*of mowse does not support such applications. 1029**/ 1030 1031 get_background_message: 1032 entry (p_reply_string, p_code); 1033 p_code = ws_error_$not_available; 1034 return; 1035 1036 /* */ 1037 1038 /* : *** Entry: get_status - internal entry for ws_ *** */ 1039 1040 1041 /* : ENTRY FUNCTION 1042* 1043*Request status information from a specified applicatiion. Since this can only 1044*be called from a foreground application and MOWSE is not able to support such 1045*applications this function need not be inplemented. It will return an error 1046*code (ws_error_$not_available) if called. 1047**/ 1048 1049 get_status: 1050 entry (p_major, p_status_request, p_status_result, p_code); 1051 p_code = ws_error_$not_available; 1052 return; 1053 1054 /* */ 1055 1056 /* : *** Entry: put_background_message - internal entry for ws_ *** */ 1057 1058 /* : ENTRY FUNCTION 1059* 1060*Provides a background application with the means of displaying one of two 1061*types of messages through the foreground channel to a foreground application. 1062**/ 1063 1064 1065 /* : NOTES 1066* 1067*p_code is one of the following: 1068* 1069* 0 -- indicating that the background message consist only of the 1070* contents of the control_string. 1071* 1072* SEND_QUERY -- indicating that the control string will be used as a 1073* prompt requiring user INPUT. 1074* 1075* A standard Multics error code -- indicating that the background message 1076* will consist of the converted error code to com_err_ format of 1077* message 1078**/ 1079 1080 put_background_message: 1081 entry options (variable); 1082 1083 /* : Find the number of arguments passed to this routine */ 1084 1085 errcode = 0; 1086 call cu_$arg_count (arg_count, errcode); 1087 1088 /* : If the number of arguments is less than 3 then return */ 1089 1090 if arg_count < 3 then 1091 return; 1092 1093 /* : Get the first argument (mcb_ptr) and return if it is null */ 1094 1095 call cu_$arg_list_ptr (arg_list_ptr); 1096 call cu_$arg_ptr (1, arg_ptr, arg_len, errcode); 1097 if errcode ^= 0 then 1098 return; 1099 if arg_ptr -> based_mcb_ptr = null then 1100 return; 1101 temp_mcb_ptr = arg_ptr -> based_mcb_ptr; 1102 1103 /* : Check mcb_ptr */ 1104 1105 call check_mcb_ptr (temp_mcb_ptr, ecode); 1106 if ecode ^= 0 then 1107 return; 1108 1109 /* : Get mowse info pointer */ 1110 1111 mowse_info_ptr = temp_mcb_ptr -> mcb.mowse_info_ptr; 1112 1113 /* : Get the second argument (code) and perform the following 1114* assignment: 1115* code = 0 minor = PUT_TO_BACKGROUND_BUFFER 1116* code = SEND_QUERY minor = PUT_TO_QUERY_MESSAGE_BUFFER 1117* otherwise minor = -1 */ 1118 1119 call cu_$arg_ptr (2, arg_ptr, arg_len, errcode); 1120 if errcode ^= 0 then 1121 return; 1122 ecode = arg_ptr -> based_code; 1123 1124 if ecode = 0 then 1125 minor_num = PUT_TO_BACKGROUND_BUFFER; 1126 else if ecode = SEND_QUERY then 1127 minor_num = PUT_TO_QUERY_MESSAGE_BUFFER; 1128 else 1129 minor_num = -1; 1130 1131 /* : get caller's name */ 1132 1133 call cu_$arg_ptr (3, arg_ptr, arg_len, errcode); 1134 if errcode ^= 0 then 1135 return; 1136 caller_name = arg_ptr -> based_caller_name; 1137 caller_name_length = min (arg_len, MAXIMUM_BG_SIZE); 1138 1139 formatted_string_length = 0; 1140 longinfo_length = 0; 1141 1142 /* : create destination = remote_system|internal */ 1143 1144 call capability_$pack (REMOTE_SYSTEM, INTERNAL, destination, 1145 errcode); 1146 if errcode ^= 0 then 1147 return; 1148 1149 /* : If minor = PUT_TO_BACKGROUND_BUFFER then 1150* - if there is a fourth variable (control_string) get it. 1151* -- create a formatted string */ 1152 1153 if minor_num = PUT_TO_BACKGROUND_BUFFER then 1154 if arg_count >= 4 then do; 1155 call ioa_$general_rs (arg_list_ptr, 4, 5, 1156 formatted_string, arg_len, "0"b, "0"b); 1157 formatted_string_length = 1158 min (arg_len, MAXIMUM_BG_SIZE); 1159 end; 1160 1161 /* : If minor = PUT_TO_QUERY_MESSAGE_BUFFER then 1162* - if the control string argument is present then 1163* -- generate the formatted string. */ 1164 1165 if minor_num = PUT_TO_QUERY_MESSAGE_BUFFER then 1166 if arg_count > 3 then do; 1167 call ioa_$general_rs (arg_list_ptr, 4, 5, 1168 formatted_string, arg_len, "0"b, "0"b); 1169 formatted_string_length = 1170 min (arg_len, MAXIMUM_BG_SIZE); 1171 end; 1172 1173 /* : If minor = -1 then 1174* - convert the error code to a error string. 1175* - if a control string is present then 1176* -- convert it to a formatted string. */ 1177 1178 if minor_num = -1 then do; 1179 minor_num = PUT_TO_BACKGROUND_BUFFER; 1180 call com_err_$convert_status_code_ (ecode, shortinfo, 1181 longinfo); 1182 do longinfo_length = length (longinfo) by -1 to 1 1183 while (substr (longinfo, longinfo_length, 1) = " "); 1184 end; 1185 1186 if arg_count > 3 then do; 1187 call ioa_$general_rs (arg_list_ptr, 4, 5, 1188 formatted_string, arg_len, "0"b, "0"b); 1189 formatted_string_length = min (arg_len, MAXIMUM_BG_SIZE); 1190 end; 1191 end; 1192 1193 /* : Concatenate "caller_name: longinfo formatted_string" 1194* send the message */ 1195 1196 result_string = 1197 substr (caller_name, 1, caller_name_length) 1198 || ": " 1199 || substr (longinfo, 1, longinfo_length) 1200 || " " 1201 || substr (formatted_string, 1, formatted_string_length); 1202 result_string_length = 1203 min (caller_name_length + longinfo_length 1204 + formatted_string_length + 3, MAXIMUM_BG_SIZE); 1205 call send_bg (temp_mcb_ptr, destination, minor_num, 1206 addr (result_string), result_string_length, FG, errcode); 1207 1208 return; 1209 1210 /* */ 1211 1212 /* : *** Entry: put_status - internal entry for ws_ *** */ 1213 1214 /* : ENTRY FUNCTION 1215* 1216*Send status information to the capability application requesting it. 1217**/ 1218 1219 put_status: 1220 entry (p_major, p_status_result, p_mcb_ptr, p_code); 1221 1222 /* : check the mcb pointer */ 1223 1224 call check_mcb_ptr (p_mcb_ptr, p_code); 1225 if p_code ^= 0 then 1226 return; 1227 1228 /* : Get mowse info pointer */ 1229 1230 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 1231 1232 /* : unpack and check the major capability given as input */ 1233 1234 call capability_$unpack (sysid, major_num, p_major, p_code); 1235 if p_code ^= 0 then 1236 return; 1237 1238 /* : Verify that the capability for which the status is destined exists */ 1239 1240 call verify_capability (mowse_info_ptr, p_major, p_code); 1241 if p_code ^= 0 then 1242 return; 1243 1244 /* : The maximum size which may be sent is one packet */ 1245 1246 formatted_string_length = 1247 min ((length (p_status_result)), MAXIMUM_PACKET_SIZE); 1248 1249 /* : Send status reply messsage */ 1250 1251 call send_msg_ (p_mcb_ptr, p_major, STATUS_REPLY, 1252 addr (p_status_result), formatted_string_length, FG, 1253 p_code); 1254 if p_code ^= 0 then do; 1255 call fatal_mowse_trap_ (p_code); 1256 return; 1257 end; 1258 1259 return; 1260 1261 /* */ 1262 1263 /* : *** Entry: reset_capability - internal entry for ws_ *** */ 1264 1265 /* : ENTRY FUNCTION 1266* 1267*Resetting a capability on a remote or local system. 1268**/ 1269 1270 reset_capability: 1271 entry (p_major, p_mcb_ptr, p_code); 1272 1273 /* : Check the mcb_ptr */ 1274 1275 call check_mcb_ptr (p_mcb_ptr, p_code); 1276 if p_code ^= 0 then 1277 return; 1278 1279 /* : Get mowse info pointer */ 1280 1281 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 1282 1283 /* : Set reset flag of application issuing this call to prevent 1284* any messages destined for the aplication from being sent 1285* to it. */ 1286 1287 call capability_$unpack (sysid, major_num, 1288 p_mcb_ptr -> mcb.major_capability, p_code); 1289 if p_code ^= 0 then 1290 return; 1291 1292 /* : if application on remote system then set the remote reset flag */ 1293 1294 if sysid = REMOTE_SYSTEM then 1295 mowse_info_ptr -> mowse_info.remote_cat (major_num).flags.reset 1296 = TRUE; 1297 else 1298 mowse_info_ptr -> mowse_info.local_cat (major_num).flags.reset 1299 = TRUE; 1300 1301 /* : send a RESET_APPLICATION message */ 1302 1303 call send_msg_ (p_mcb_ptr, p_major, RESET_APPLICATION, null, 0, 1304 BG, p_code); 1305 if p_code ^= 0 then do; 1306 call fatal_mowse_trap_ (p_code); 1307 return; 1308 end; 1309 1310 return; 1311 1312 /* */ 1313 1314 /* : *** Entry: resume_capability - internal entry for ws_ *** */ 1315 1316 /* : ENTRY FUNCTION 1317* 1318*Tells MOWSE to resume a specified application 1319**/ 1320 1321 /* : NOTES 1322* 1323*"major" identifies both the capability and the system on which it is running. 1324**/ 1325 1326 resume_capability: 1327 entry (p_major, p_mcb_ptr, p_code); 1328 1329 p_code = 0; 1330 1331 /* : Check mcb_ptr */ 1332 1333 call check_mcb_ptr (p_mcb_ptr, p_code); 1334 if p_code ^= 0 then 1335 return; 1336 1337 /* : Get mowse info pointer */ 1338 1339 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 1340 call capability_$unpack (source_system, source_major, 1341 p_mcb_ptr -> mcb.major_capability, p_code); 1342 if p_code ^= 0 then 1343 return; 1344 1345 /* : Unpack the major capability into a system and capability number. */ 1346 1347 call capability_$unpack (sysid, major_num, p_major, p_code); 1348 if p_code ^= 0 then 1349 return; 1350 1351 /* : Check if capability is suspended */ 1352 1353 if sysid = LOCAL_SYSTEM then do; 1354 if ^mowse_info_ptr 1355 -> mowse_info.local_cat (major_num).flags.suspended then 1356 1357 p_code = ws_error_$not_suspended; 1358 end; 1359 else if sysid = REMOTE_SYSTEM then do; 1360 if ^mowse_info_ptr 1361 -> mowse_info.remote_cat (major_num).flags.suspended then 1362 1363 p_code = ws_error_$not_suspended; 1364 1365 mowse_info_ptr 1366 -> mowse_info.remote_cat (major_num).flags.suspended 1367 = FALSE; 1368 end; 1369 else 1370 p_code = ws_error_$invalid_system_id; 1371 1372 if p_code ^= 0 then 1373 return; 1374 1375 /* : - Call the application via the predefined minor capability 1376* - RESUME_APPLICATION by sending a message */ 1377 1378 call send_msg_ (p_mcb_ptr, p_major, RESUME_APPLICATION, null, 1379 0, BG, p_code); 1380 if p_code ^= 0 then do; 1381 call fatal_mowse_trap_ (p_code); 1382 return; 1383 end; 1384 1385 /* : If resuming a capability on the local system, send a RESET_SUSPEND to 1386* the remote */ 1387 1388 if sysid = LOCAL_SYSTEM then do; 1389 call capability_$pack (REMOTE_SYSTEM, INTERNAL, 1390 temp_major, (0)); 1391 call send_mowse_message_ (p_mcb_ptr, LOCAL_SYSTEM, major_num, 1392 REMOTE_SYSTEM, INTERNAL, RESET_SUSPEND, LAST, null, 0, BG, 1393 p_code); 1394 end; 1395 return; 1396 1397 /* */ 1398 1399 /* : *** Entry: send_query_reply - internal entry for ws_ *** */ 1400 1401 /* : ENTRY FUNCTION 1402* 1403*NOT AVAILABLE. 1404**/ 1405 1406 send_query_reply: 1407 entry (p_reply_string, p_major, p_code); 1408 p_code = ws_error_$not_available; 1409 return; 1410 1411 /* */ 1412 1413 /* : *** Entry: sleep - internal entry for ws_ *** */ 1414 1415 /* : ENTRY FUNCTION 1416* 1417*Puts the caller to sleep (suspends it) for a given number of seconds. 1418**/ 1419 1420 sleep: 1421 entry (p_mcb_ptr, p_time, p_code); 1422 1423 p_code = 0; 1424 1425 /* : Check the mcb pointer */ 1426 1427 call check_mcb_ptr (p_mcb_ptr, p_code); 1428 if p_code ^= 0 then 1429 return; 1430 1431 /* : Get mowse info pointer */ 1432 1433 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 1434 1435 /* : If the time requested is zero do nothing */ 1436 1437 if (p_time <= 0) then do; 1438 p_code = ws_error_$invalid_sleep_interval; 1439 return; 1440 end; 1441 1442 /* : Allocate control order structure, fill it with the required infomation 1443* and issue a control order to start application sleeping. */ 1444 1445 call capability_$unpack (sysid, major_num, 1446 p_mcb_ptr -> mcb.major_capability, p_code); 1447 if p_code ^= 0 then do; 1448 call fatal_mowse_trap_ (p_code); 1449 return; 1450 end; 1451 1452 mio_sleep.version = mowse_io_info_version_1; 1453 mio_sleep.major_index = major_num; 1454 mio_sleep.sleep_seconds = p_time; 1455 call iox_$control (p_mcb_ptr -> mcb.iocb_ptr, "put_to_sleep", 1456 addr (mio_sleep), p_code); 1457 if p_code ^= 0 then 1458 return; 1459 1460 /* : Send message to remote system telling it to update the remote 1461* CAT table entry for this application. */ 1462 1463 call capability_$pack (REMOTE_SYSTEM, INTERNAL, destination, 1464 p_code); 1465 if p_code ^= 0 then do; 1466 call fatal_mowse_trap_ (p_code); 1467 return; 1468 end; 1469 1470 call send_msg_ (p_mcb_ptr, destination, SET_SLEEP_FLAG, null, 1471 0, BG, p_code); 1472 1473 mowse_info_ptr -> mowse_info.local_cat (major_num).sleep_time = 1474 p_time; 1475 1476 return; 1477 1478 /* */ 1479 1480 /* : *** Entry: suspend_capability - internal entry for ws_ *** */ 1481 1482 /* : ENTRY FUNCTION 1483* 1484*Tells MOWSE to suspend a given application. 1485**/ 1486 1487 /* : NOTES 1488* 1489*"major" identifies both the capability and the system on which it is running. 1490**/ 1491 1492 suspend_capability: 1493 entry (p_major, p_mcb_ptr, p_code); 1494 1495 p_code = 0; 1496 1497 /* : Check mcb_ptr */ 1498 1499 call check_mcb_ptr (p_mcb_ptr, p_code); 1500 if p_code ^= 0 then 1501 return; 1502 1503 /* : Get capability number and sytem id of capability to suspend */ 1504 1505 call capability_$unpack (sysid, major_num, p_major, p_code); 1506 if p_code ^= 0 then 1507 return; 1508 1509 /* : Get mowse info pointer */ 1510 1511 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 1512 if mowse_info_ptr = null then do; 1513 p_code = ws_error_$invalid_mcb; 1514 return; 1515 end; 1516 1517 /* : Check if the capability is not already suspended */ 1518 1519 if sysid = LOCAL_SYSTEM then do; 1520 if mowse_info_ptr 1521 -> mowse_info.local_cat (major_num).flags.suspended then 1522 1523 p_code = ws_error_$suspended; 1524 end; 1525 else if sysid = REMOTE_SYSTEM then do; 1526 if mowse_info_ptr 1527 -> mowse_info.remote_cat (major_num).flags.suspended then 1528 1529 p_code = ws_error_$suspended; 1530 1531 mowse_info_ptr 1532 -> mowse_info.remote_cat (major_num).flags.suspended 1533 = TRUE; 1534 end; 1535 else 1536 p_code = ws_error_$invalid_system_id; 1537 1538 if p_code ^= 0 then 1539 return; 1540 1541 /* : - Call the application with the predefined minor capability 1542* SUSPEND_APPLICATION by sending a message */ 1543 1544 call send_msg_ (p_mcb_ptr, p_major, SUSPEND_APPLICATION, null, 0, 1545 BG, p_code); 1546 if p_code ^= 0 then do; 1547 call fatal_mowse_trap_ (p_code); 1548 return; 1549 end; 1550 1551 /* : If suspending a capability on the local system, send a SET_SUSPEND to 1552* the remote */ 1553 1554 if sysid = LOCAL_SYSTEM then do; 1555 call capability_$pack (REMOTE_SYSTEM, INTERNAL, 1556 temp_major, (0)); 1557 call send_mowse_message_ (p_mcb_ptr, LOCAL_SYSTEM, major_num, 1558 REMOTE_SYSTEM, INTERNAL, SET_SUSPEND, LAST, null, 0, BG, 1559 p_code); 1560 end; 1561 return; 1562 1563 /* */ 1564 1565 /* : *** Entry: terminate_capability - internal entry for ws_ *** */ 1566 1567 1568 /* ENTRY FUNCTION 1569* 1570*Tells MOWSE to terminate a specified application MOWSE directs an application 1571*to terminate itself. 1572**/ 1573 1574 terminate_capability: 1575 entry (p_major, p_mcb_ptr, p_code); 1576 1577 p_code = 0; 1578 call check_mcb_ptr (p_mcb_ptr, p_code); 1579 if p_code ^= 0 then 1580 return; 1581 1582 /* : Unpack the major capability into major capability number and system 1583* id. */ 1584 1585 call capability_$unpack (sysid, cap_num, p_major, p_code); 1586 if p_code ^= 0 then 1587 return; 1588 1589 /* : Get mowse info pointer */ 1590 1591 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 1592 1593 call verify_capability (mowse_info_ptr, p_major, p_code); 1594 if p_code ^= 0 then 1595 return; 1596 1597 /* : If system id is LOCAL_SYSTEM or REMOTE_SYSTEM then 1598* - call the capability with minor capability TERMINATE_APPLICATION */ 1599 1600 call send_msg_ (p_mcb_ptr, p_major, TERMINATE_APPLICATION, 1601 null, 0, BG, p_code); 1602 if p_code ^= 0 then do; 1603 call fatal_mowse_trap_ (p_code); 1604 return; 1605 end; 1606 1607 return; 1608 1609 /* */ 1610 1611 /* INTERNAL PROCEDURES */ 1612 1613 1614 /* *** Procedure: send_bg - Internal proc for COMMENTS *** */ 1615 1616 1617 send_bg: 1618 proc (p_mcb_ptr, p_major, p_minor, p_data_ptr, p_data_len, p_channel, 1619 p_code); 1620 1621 /* : PROCEDURE FUNCTION 1622* 1623*Split a background message into pieces in the event that the message is 1624*greater than on mowse_io_ packet worth. 1625**/ 1626 1627 /* INPUT PARAMETERS */ 1628 dcl p_channel fixed bin; /* Message channel */ 1629 dcl p_code fixed bin (35) parameter; 1630 dcl p_data_len fixed bin parameter; /* Length of data */ 1631 dcl p_data_ptr ptr parameter; /* Data to send */ 1632 dcl p_major fixed bin parameter; /* Destination major */ 1633 dcl p_minor fixed bin parameter; /* Destination minor */ 1634 dcl p_mcb_ptr ptr parameter; /* caller's mcb */ 1635 1636 1637 /* MISC VARIABLES */ 1638 dcl data_length fixed bin; /* Length of partial message */ 1639 dcl send_data_pos fixed bin; /* Current position in send_data */ 1640 dcl send_data char (p_data_len); 1641 dcl data_overlay char (p_data_len) based (p_data_ptr); 1642 1643 1644 /* INITIALIZATION */ 1645 send_data_pos = 1; 1646 1647 do while (send_data_pos <= p_data_len); 1648 data_length = 1649 min (p_data_len - send_data_pos + 1, MAXIMUM_PACKET_SIZE); 1650 send_data = substr (data_overlay, send_data_pos, data_length); 1651 send_data_pos = send_data_pos + data_length; 1652 1653 call send_msg_ (p_mcb_ptr, p_major, p_minor, addr (send_data), 1654 data_length, FG, p_code); 1655 if p_code ^= 0 then do; 1656 call fatal_mowse_trap_ (p_code); 1657 return; 1658 end; 1659 end; 1660 end send_bg; 1661 1662 /* */ 1663 1664 /* : *** Procedure: check_mcb_ptr - internal proc for ws_ *** */ 1665 1666 /* : PROCEDURE FUNCTION 1667* 1668*Check the mcb_ptr to ensure that it is valid and that the major capability 1669*it contains is valid 1670**/ 1671 1672 check_mcb_ptr: 1673 proc (p_mcb_ptr, p_code); 1674 1675 /* INPUT PARAMETER */ 1676 dcl p_mcb_ptr ptr; 1677 1678 /* OUTPUT PARAMETERS */ 1679 dcl p_code fixed bin (35); 1680 1681 /* MISC VARIABLES */ 1682 dcl code fixed bin (35); 1683 dcl system fixed bin; 1684 dcl major fixed bin; 1685 1686 1687 p_code = ws_error_$invalid_mcb; 1688 if p_mcb_ptr = null then 1689 return; 1690 1691 if p_mcb_ptr -> mcb.version ^= VERSION then do; 1692 p_code = error_table_$unimplemented_version; 1693 return; 1694 end; 1695 1696 mowse_info_ptr = p_mcb_ptr -> mcb.mowse_info_ptr; 1697 if mowse_info_ptr = null then 1698 return; 1699 1700 call capability_$unpack (system, major, 1701 p_mcb_ptr -> mcb.major_capability, code); 1702 if code ^= 0 then 1703 return; 1704 if system ^= LOCAL_SYSTEM then 1705 return; 1706 if major = INTERNAL then do; 1707 search_name = "internal_mowse_"; 1708 if p_mcb_ptr -> mcb.capability_name ^= search_name then 1709 return; 1710 p_code = 0; 1711 return; 1712 end; 1713 if mowse_info_ptr -> mowse_info.local_cat (major).mcb_ptr 1714 ^= p_mcb_ptr then 1715 return; 1716 p_code = 0; 1717 end check_mcb_ptr; 1718 1719 /* */ 1720 1721 /* : *** Procedure: get_buff_length - internal procedure for ws_ *** */ 1722 1723 /* : PROCEDURE FUNCTION 1724* 1725*Returns a valid buffer length in case the one the user passed is out of 1726*bounds. 1727**/ 1728 1729 get_buff_length: 1730 proc (length, min, max) returns (fixed bin (17)); 1731 1732 /* INPUT PARAMETERS */ 1733 dcl length fixed bin (17); 1734 dcl min fixed bin (17); 1735 dcl max fixed bin (17); 1736 1737 if (length < min) then 1738 return (min); 1739 else if (length > max) then 1740 return (max); 1741 else 1742 return (length); 1743 1744 end get_buff_length; 1745 1746 /* */ 1747 1748 /* : *** Procedure: null_mowse_info_handler. Internal procedure for ws_ *** */ 1749 1750 1751 null_mowse_info_handler: 1752 proc (); 1753 1754 /* : PROCEDURE FUNCTION 1755* 1756*Terminate the process as the MOWSE tables have disappeared, first tell 1757*mowse_io_ to close so that the PC can be told of the event. 1758**/ 1759 1760 /* : NOTES 1761**/ 1762 1763 /* INPUT PARAMETERS */ 1764 1765 /* OUTPUT PARAMETERS */ 1766 1767 /* MISC VARIABLES */ 1768 dcl mowse_iocb_ptr ptr; /* mowse_io_ iocb */ 1769 dcl 01 fatal_error_info aligned, 1770 02 version fixed bin, /* Must be 0 */ 1771 02 status_code fixed bin (35); /* Error code to terminate_process_ */ 1772 1773 /* INITIALIZATION */ 1774 1775 call find_mowse_io_ (mowse_iocb_ptr, (0)); 1776 call iox_$close (mowse_iocb_ptr, (0)); 1777 1778 fatal_error_info.version = 0; 1779 fatal_error_info.status_code = error_table_$no_table; 1780 call terminate_process_ ("fatal_error", addr (fatal_error_info)); 1781 1782 end null_mowse_info_handler; 1783 1784 /* */ 1785 1786 /* : *** Procedure: verify_capability. Internal procedure for ws_ *** */ 1787 1788 1789 verify_capability: 1790 proc (p_mowse_info_ptr, p_capability_id, p_code); 1791 1792 /* : PROCEDURE FUNCTION 1793* 1794*Verify that a capability exists by checking the respective CAT table 1795**/ 1796 1797 /* : NOTES 1798**/ 1799 1800 /* INPUT PARAMETERS */ 1801 dcl p_mowse_info_ptr ptr; 1802 dcl p_capability_id fixed bin (17); 1803 1804 /* OUTPUT PARAMETERS */ 1805 dcl p_code fixed bin (35); 1806 1807 /* MISC VARIABLES */ 1808 dcl system_id fixed bin (17); 1809 dcl capability_number fixed bin (17); 1810 1811 1812 p_code = 0; 1813 1814 if p_mowse_info_ptr = null then do; 1815 p_code = ws_error_$invalid_capability_number; 1816 return; 1817 end; 1818 1819 call capability_$unpack (system_id, capability_number, 1820 p_capability_id, p_code); 1821 if p_code ^= 0 then 1822 return; 1823 if (system_id = LOCAL_SYSTEM) then do; 1824 call check_mcb_ptr ((p_mowse_info_ptr 1825 -> mowse_info.local_cat (capability_number).mcb_ptr), 1826 p_code); 1827 if p_code ^= 0 then do; 1828 p_code = ws_error_$invalid_capability_number; 1829 return; 1830 end; 1831 end; 1832 else if (system_id = REMOTE_SYSTEM) then do; 1833 if (p_mowse_info_ptr 1834 -> mowse_info.remote_cat (capability_number). 1835 major_capability = 0) then do; 1836 p_code = ws_error_$invalid_capability_number; 1837 return; 1838 end; 1839 end; 1840 else 1841 p_code = ws_error_$invalid_capability_number; 1842 end verify_capability; 1843 1844 /* */ 1845 1846 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-07-19,Smith), approve(87-07-15,MCR7580), 1 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 6* Created to define MOWSE information to be 1 7* placed into a temp segment. 1 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 1 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 10* Approved. 1 11* 3) change(87-02-25,Flegel), approve(87-02-25,MCR7580), 1 12* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 13* Added bit switches to the init_mowse_info structure as well as the force 1 14* flag. 1 15* 4) change(87-03-24,Flegel), approve(87-03-24,MCR7580), 1 16* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 17* Added open_struc for passing EOP and escape char info from attach_mowse 1 18* to mowse_io_. 1 19* END HISTORY COMMENTS */ 1 20 1 21 /* CAT index limits */ 1 22 1 23 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 1 24 dcl MINIMUM_CAT_ENTRY fixed bin int static options (constant) init (33); 1 25 dcl MAXIMUM_CAT_ENTRY fixed bin int static options (constant) init (64); 1 26 1 27 dcl CAPABILITY_NAME_LENGTH fixed bin int static options (constant) init (32); 1 28 1 29 /* Mowse information structure */ 1 30 1 31 dcl 01 mowse_info based aligned, 1 32 02 version char (8), 1 33 02 local_cat dimension (33:64), /* Multics CAT table */ 1 34 03 flags, 1 35 04 reset bit (1) unal, /* Reset in progress */ 1 36 04 suspended bit (1) unal, /* Suspended applciation */ 1 37 04 status bit (1) unal, /* Status pending */ 1 38 04 mbz1 bit (33) unal, 1 39 03 sleep_time fixed bin, /* Time application is sleeping */ 1 40 03 mcb_ptr ptr, /* Capability MCB */ 1 41 02 remote_cat dimension (33:64), /* PC CAT table */ 1 42 03 major_capability 1 43 fixed bin, /* Capability number */ 1 44 03 capability_name char (32), /* Name of capability */ 1 45 03 flags, 1 46 04 reset bit (1) unal, /* Reset in progress */ 1 47 04 suspended bit (1) unal, /* Suspended capability */ 1 48 04 sleep_time bit (1) unal, /* Application sleeping */ 1 49 04 mbz2 bit (33) unal, 1 50 02 message_manager_info, /* Info for processing messages */ 1 51 03 head_list_ptr ptr, /* Head of message list */ 1 52 03 tail_list_ptr ptr, /* Tail of message list */ 1 53 03 pending_messages 1 54 fixed bin, /* Number of pending messages */ 1 55 02 mowse_flags, 1 56 03 trace bit (1) unal, /* Message tracing facility active */ 1 57 03 debug bit (1) unal, /* Debugging packets facility active */ 1 58 03 error_handled bit (1) unal, /* In mowse_error_handler procedure */ 1 59 03 mbz1 bit (33) unal, 1 60 03 trace_file_iocb ptr, /* Trace file iocb */ 1 61 03 debug_file_iocb ptr, /* Debug file iocb */ 1 62 02 init_mowse_info_ptr 1 63 ptr; /* Initialization information */ 1 64 1 65 /* MOWSE initialization information */ 1 66 1 67 dcl init_mowse_info_ptr ptr; 1 68 dcl 01 init_mowse_info based (init_mowse_info_ptr), 1 69 02 version char (8), 1 70 02 flags, /* Bit switches */ 1 71 03 trace_sw bit (1) unal, 1 72 03 debug_sw bit (1) unal, 1 73 03 io_switch_sw bit (1) unal, 1 74 03 force_sw bit (1) unal, 1 75 03 start_up_sw bit (1) unal, 1 76 03 escape_sw bit (1) unal, 1 77 03 network_sw bit (1) unal, 1 78 03 pad bit (29) unal, 1 79 02 escape, 1 80 03 chars (0:255) bit (1) unal, /* Character escapes */ 1 81 03 pad bit (32) unal, 1 82 02 trace char (512) var, /* Trace file name */ 1 83 02 debug char (512) var, /* Debug file name */ 1 84 02 io_switch char (512) var, /* Io switch name of mowse_io_ attachment */ 1 85 02 startup (MAXIMUM_CAT_ENTRY - MINIMUM_CAT_ENTRY + 1) 1 86 char (168) var; /* Capability to be autoloaded */ 1 87 1 88 /* Open description structure (this is padded to character bounds as it 1 89* is a character overlay structure - passed as a character string) */ 1 90 1 91 dcl open_struc_ptr ptr; 1 92 dcl 01 open_struc based (open_struc_ptr), 1 93 02 flags, 1 94 03 network_sw bit (1) unal, 1 95 03 escape_sw bit (1) unal, 1 96 03 pad bit (7) unal, 1 97 02 escape, 1 98 03 switches (0:255) bit (1) unal, 1 99 03 pad bit (32) unal, 1 100 02 mbz bit (16) unal; 1 101 1 102 /* END INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 1847 2 1 /* BEGIN INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-09-17,Flegel), approve(86-12-16,MCR7580), 2 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 2 6* Created. 2 7* 2) change(86-10-03,Flegel), approve(86-12-16,MCR7580), 2 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 2 9* Combined mowse_minor_caps.incl.pl1 and 2 10* mowse.incl.pl1 so that programmer only needs include mowse.incl.pl1 2 11* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 2 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 2 13* Approved. 2 14* 4) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 2 15* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 2 16* Changes to support async call channels. 2 17* END HISTORY COMMENTS */ 2 18 2 19 /* Name of MOWSE temp seg for data */ 2 20 2 21 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 2 22 dcl temp_seg_name char (6) init ("MOWSE_"); 2 23 2 24 /* Version number */ 2 25 2 26 dcl MOWSE_VERSION_ char (8) int static options (constant) init ("version1"); 2 27 2 28 /* System identification */ 2 29 2 30 dcl LOCAL_SYSTEM fixed bin int static options (constant) init (32); 2 31 dcl REMOTE_SYSTEM fixed bin int static options (constant) init (33); 2 32 2 33 /* Status request return codes */ 2 34 2 35 dcl STATUS_SUCCESS fixed bin (8) int static options (constant) 2 36 init (32); 2 37 dcl STATUS_FAILED fixed bin (8) int static options (constant) 2 38 init (33); 2 39 2 40 /* Input/output capability buffer size limits */ 2 41 2 42 dcl MINIMUM_BUFFER_SIZE fixed bin int static options (constant) init (128); 2 43 dcl MAXIMUM_BUFFER_SIZE fixed bin int static options (constant) init (65536); 2 44 dcl MAXIMUM_BG_SIZE fixed bin int static options (constant) init (512); 2 45 2 46 /* Packet size (communication) constants */ 2 47 2 48 dcl PACKET_SIZE fixed bin int static options (constant) init (124); 2 49 dcl MAXIMUM_PACKET_SIZE fixed bin int static options (constant) init (118); 2 50 2 51 /* Query message constants */ 2 52 2 53 dcl SEND_QUERY fixed bin int static options (constant) init (128); 2 54 dcl ACCEPT fixed bin int static options (constant) init (32); 2 55 dcl REJECT fixed bin int static options (constant) init (33); 2 56 2 57 /* Trace information constants */ 2 58 2 59 dcl RECEIVE fixed bin int static options (constant) init (1); 2 60 dcl SEND fixed bin int static options (constant) init (0); 2 61 2 62 /* Limits on dedicated minor capabilities */ 2 63 2 64 dcl MINIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (32); 2 65 dcl MAXIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (63); 2 66 dcl MINIMUM_USER_MINOR fixed bin int static options (constant) init (64); 2 67 dcl MAXIMUM_USER_MINOR fixed bin int static options (constant) init (127); 2 68 2 69 /* Dedicated Minor Capabilities */ 2 70 2 71 dcl LAST fixed bin int static options (constant) init (0); 2 72 dcl EXECUTE_COMMAND_REPLY fixed bin int static options (constant) init (32); 2 73 dcl EXECUTE_CAPABILITY_REPLY 2 74 fixed bin int static options (constant) init (33); 2 75 dcl FAIL_CAPABILITY fixed bin int static options (constant) init (33); 2 76 dcl INTERNAL fixed bin int static options (constant) init (32); 2 77 dcl EXECUTE_COMMAND fixed bin int static options (constant) init (34); 2 78 dcl ADD_TO_REMOTE_CAT fixed bin int static options (constant) init (35); 2 79 dcl DELETE_FROM_REMOTE_CAT fixed bin int static options (constant) init (36); 2 80 dcl SUSPEND_APPLICATION fixed bin int static options (constant) init (37); 2 81 dcl RESUME_APPLICATION fixed bin int static options (constant) init (38); 2 82 dcl TERMINATE_APPLICATION fixed bin int static options (constant) init (39); 2 83 dcl RESET_APPLICATION fixed bin int static options (constant) init (40); 2 84 dcl RESET_REPLY fixed bin int static options (constant) init (41); 2 85 dcl WAKE_UP fixed bin int static options (constant) init (42); 2 86 dcl STATUS fixed bin int static options (constant) init (43); 2 87 dcl OVERFLOWED_BUFFER fixed bin int static options (constant) init (44); 2 88 dcl SYSTEM_ERROR fixed bin int static options (constant) init (45); 2 89 dcl QUERY_REPLY fixed bin int static options (constant) init (46); 2 90 dcl RESPONSE_CONNECT fixed bin int static options (constant) init (47); 2 91 dcl RESPONSE_DISCONNECT fixed bin int static options (constant) init (48); 2 92 dcl REQUEST_CONNECT fixed bin int static options (constant) init (49); 2 93 dcl REQUEST_DISCONNECT fixed bin int static options (constant) init (50); 2 94 dcl CONTINUE fixed bin int static options (constant) init (51); 2 95 dcl MORE fixed bin int static options (constant) init (52); 2 96 dcl SET_SLEEP_FLAG fixed bin int static options (constant) init (53); 2 97 dcl RESET_SLEEP_FLAG fixed bin int static options (constant) init (54); 2 98 dcl SET_SUSPEND fixed bin int static options (constant) init (55); 2 99 dcl RESET_SUSPEND fixed bin int static options (constant) init (56); 2 100 dcl STATUS_REPLY fixed bin int static options (constant) init (57); 2 101 2 102 /* Foreground */ 2 103 2 104 dcl FG_CONTROL_MESSAGE fixed bin int static options (constant) init (33); 2 105 dcl FG_BREAK fixed bin int static options (constant) init (34); 2 106 dcl FG_TERMINAL_DATA fixed bin int static options (constant) init (35); 2 107 dcl FG_MORE_DATA fixed bin int static options (constant) init (36); 2 108 dcl PUT_TO_BACKGROUND_BUFFER 2 109 fixed bin int static options (constant) init (37); 2 110 dcl PUT_TO_QUERY_MESSAGE_BUFFER 2 111 fixed bin int static options (constant) init (38); 2 112 2 113 /* END INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 1848 3 1 /* BEGIN INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-05-17,Smith), approve(87-07-15,MCR7580), 3 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 6* Created to define the mcb (Mowse Control Block) 3 7* for information on capabilities. 3 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 3 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 10* Approved. 3 11* END HISTORY COMMENTS */ 3 12 /* MOWSE control block */ 3 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 3 14 dcl 01 mcb based, 3 15 02 version char (8), 3 16 02 capability_name char (32), /* Name of capability */ 3 17 02 major_capability fixed bin (17), /* Capability number */ 3 18 02 inbuff_length fixed bin (17), /* Length of buffer */ 3 19 02 inbuff_position_index 3 20 fixed bin (17), /* Current position in inbuffer */ 3 21 02 inbuff_data_length 3 22 fixed bin (17), /* Amoiunt of data in inbuffer */ 3 23 02 outbuff_length fixed bin (17), /* Length of outbuffer */ 3 24 02 mbz1 bit (36) unal, 3 25 02 entry_var entry options (variable), /* Message processor entry point of capability */ 3 26 02 data_block_ptr ptr, /* Capability data */ 3 27 02 inbuff ptr, /* Message input buffer */ 3 28 02 outbuff_list_start 3 29 ptr, /* Pointer to outbuffer data */ 3 30 02 outbuff_list_end ptr, /* Last node in outbuffer data */ 3 31 02 iocb_ptr ptr, /* IOCB to mowse_io_ */ 3 32 02 mowse_info_ptr ptr; /* MOWSE information */ 3 33 /* Output buffer linked list node */ 3 34 dcl 01 output_buffer based, 3 35 02 destination_system 3 36 char, /* Destination of message */ 3 37 02 destination_major char, 3 38 02 destination_minor char, 3 39 02 buffer_position fixed bin, /* Position in buffer of message */ 3 40 02 buffer_length fixed bin, /* Length of buffer */ 3 41 02 next_buffer ptr, /* Next buffer of message */ 3 42 02 data ptr; /* Pointer to message */ 3 43 3 44 /* END INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 1849 4 1 /* BEGIN INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(86-05-17,Smith), approve(86-12-16,MCR7580), 4 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 4 6* Created to define MOWSE message formats. 4 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 4 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 4 9* Approved. 4 10* 3) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 4 11* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 4 12* Changes to support async call channels. 4 13* END HISTORY COMMENTS */ 4 14 4 15 /* Message Channels */ 4 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 4 17 dcl BG fixed bin int static options (constant) init (0); 4 18 /* Fore ground */ 4 19 dcl FG fixed bin int static options (constant) init (1); 4 20 /* Back ground */ 4 21 4 22 /* Message types: 4 23* 4 24*Each intersystem message is labelled with one of the following types. Upon 4 25*reciept of the message suitable action is undertaken. This scheme was 4 26*introduced to allow the transmission of messsages longer than the maximum 4 27*packet size. 4 28**/ 4 29 4 30 /* Templates for the various messages used throughout the mowse environment. 4 31* Non-allocatable */ 4 32 4 33 dcl message_len fixed bin init (6); 4 34 dcl message_ptr ptr; 4 35 4 36 /* expected format of message */ 4 37 4 38 dcl 01 input_message based (message_ptr), 4 39 02 header, 4 40 03 system char (1) unal, 4 41 03 major char (1) unal, 4 42 03 minor char (1) unal, 4 43 03 source_system char (1) unal, 4 44 03 source_major char (1) unal, 4 45 02 data char (message_len - 5) unal; 4 46 4 47 /* expected format of message to be handled by mowse internal execute command */ 4 48 4 49 dcl 01 execom_message based (message_ptr), 4 50 02 header, 4 51 03 system char (1) unal, 4 52 03 major char (1) unal, 4 53 03 minor char (1) unal, 4 54 03 source_system char (1) unal, 4 55 03 source_major char (1) unal, 4 56 02 data, 4 57 03 cmd_id fixed bin (17) unal, 4 58 03 command char (message_len - 7) unal; 4 59 4 60 /* expected format of message recieved when a request to alter a CAT table 4 61* is made by a remote system */ 4 62 4 63 dcl 01 alter_cat_message based (message_ptr), 4 64 02 header, 4 65 03 system char (1) unal, 4 66 03 major char (1) unal, 4 67 03 minor char (1) unal, 4 68 03 source_system char (1) unal, 4 69 03 source_major char (1) unal, 4 70 02 data, 4 71 03 major char unal, 4 72 03 major_name char (CAPABILITY_NAME_LENGTH) unal; 4 73 4 74 /* Template used to parse message recieved from some remote system. */ 4 75 4 76 dcl 01 event_message based (message_ptr), 4 77 02 header, 4 78 03 system char (1) unal, 4 79 03 major char (1) unal, 4 80 03 msg_type char (1) unal; 4 81 4 82 /* format of message of MORE type */ 4 83 4 84 dcl 01 request_more_message 4 85 based (message_ptr), 4 86 02 header, 4 87 03 system char (1) unal, 4 88 03 major char (1) unal, 4 89 03 more char (1) unal, 4 90 03 source_system char (1) unal, 4 91 03 source_major char (1) unal, 4 92 03 source_minor char (1) unal; 4 93 4 94 /* format of message of CONTINUE type */ 4 95 4 96 dcl 01 more_remaining_message 4 97 based (message_ptr), 4 98 02 header, 4 99 03 system char (1) unal, 4 100 03 major char (1) unal, 4 101 03 continue char (1) unal, 4 102 03 minor char (1) unal, 4 103 03 source_system char (1) unal, 4 104 03 source_major char (1) unal, 4 105 02 data, 4 106 03 data_buf char (message_len - 6) unal; 4 107 4 108 /* format of message of LAST type */ 4 109 4 110 dcl 01 last_message based (message_ptr), 4 111 02 header, 4 112 03 system char (1) unal, 4 113 03 major char (1) unal, 4 114 03 minor char (1) unal, 4 115 03 source_system char (1) unal, 4 116 03 source_major char (1) unal, 4 117 02 data, 4 118 03 data_buf char (message_len - 5) unal; 4 119 4 120 /* Execute_command_reply message format */ 4 121 4 122 dcl 01 execom_reply_msg based (message_ptr), 4 123 02 header, 4 124 03 system char (1) unal, 4 125 03 major char (1) unal, 4 126 03 minor char (1) unal, 4 127 03 source_system char (1) unal, 4 128 03 source_major char (1) unal, 4 129 02 data, 4 130 03 cmd_id fixed bin unal, 4 131 03 status char unal; 4 132 4 133 /* Used to manage partial messages destined for any application */ 4 134 4 135 dcl msg_node_ptr ptr; 4 136 dcl 01 message_node based (msg_node_ptr), 4 137 02 major fixed bin, 4 138 02 partial_msg_list_ptr 4 139 ptr, 4 140 02 next_node ptr, 4 141 02 prev_node ptr, 4 142 02 last_part_msg ptr; 4 143 4 144 dcl part_msg_ptr ptr; 4 145 dcl 01 partial_message based (part_msg_ptr), 4 146 02 msg_ptr ptr, 4 147 02 msg_len fixed bin, 4 148 02 next_msg ptr; 4 149 4 150 4 151 dcl part_msg_length fixed bin; 4 152 dcl part_msg char (part_msg_length) based; 4 153 4 154 /* Trace information structure */ 4 155 dcl 01 trace_message_info, 4 156 02 direction fixed bin, 4 157 02 from_system fixed bin, 4 158 02 from_major fixed bin, 4 159 02 dest_system fixed bin, 4 160 02 dest_major fixed bin, 4 161 02 dest_minor fixed bin, 4 162 02 msg_type fixed bin, 4 163 02 message char (PACKET_SIZE) var; 4 164 4 165 /* END INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 1850 5 1 /* BEGIN INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(86-06-15,Flegel), approve(86-12-16,MCR7580), 5 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 6* Created for control support for mowse_io_. 5 7* 2) change(86-08-01,Flegel), approve(86-12-16,MCR7580), 5 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 9* Changed version fields to char (8) and 5 10* installed version constant. 5 11* 3) change(86-10-08,Flegel), approve(86-12-16,MCR7580), 5 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 13* Added flush_subchannel_info structure. 5 14* 4) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 5 15* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 16* Approved. 5 17* 5) change(86-12-05,Flegel), approve(86-12-05,MCR7580), 5 18* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 19* Added mowse_io_set_video_mode_info structure. 5 20* 6) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 5 21* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 5 22* Changes to support async call channels. 5 23* END HISTORY COMMENTS */ 5 24 5 25 /* : Version number */ 5 26 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 5 27 dcl mowse_io_info_version_1 5 28 char (8) int static options (constant) 5 29 init ("miover_1"); 5 30 5 31 /* : Mowse store info structure */ 5 32 dcl mowse_io_store_info_ptr 5 33 ptr; 5 34 dcl 01 mowse_io_store_info based (mowse_io_store_info_ptr), 5 35 02 version char (8), 5 36 02 info_ptr ptr; /* Pointer to mowse_info_ structure */ 5 37 5 38 /* : Mowse info structure */ 5 39 dcl mowse_io_info_ptr ptr; 5 40 dcl 01 mowse_io_info based (mowse_io_info_ptr), 5 41 02 version char (8), 5 42 02 mcb_ptr ptr, /* Pointer to mowse_mcb */ 5 43 02 info_ptr ptr; /* Pointer to Mowse information (CATs etc.) */ 5 44 5 45 /* : Control info overlay for debug_on */ 5 46 dcl mowse_io_debug_info_ptr 5 47 ptr; 5 48 dcl 01 mowse_io_debug_info based (mowse_io_debug_info_ptr), 5 49 02 version char (8), 5 50 02 segment_name char (512) var; /* Debug file name */ 5 51 5 52 /* : Control info overlay for get_terminal_emulator_state */ 5 53 dcl mowse_io_terminal_state_ptr 5 54 ptr; 5 55 dcl 01 mowse_io_terminal_state 5 56 based (mowse_io_terminal_state_ptr), 5 57 02 version char (8), 5 58 02 state bit (1) unal, /* WSTERM state */ 5 59 02 mbz bit (35) unal; 5 60 5 61 /* : Control info overlay for send_message and send_local_message */ 5 62 dcl mowse_io_message_ptr ptr; 5 63 dcl 01 mowse_io_message based (mowse_io_message_ptr), 5 64 02 version char (8), 5 65 02 channel fixed bin, /* Channel of message */ 5 66 02 io_message_ptr ptr, /* Pointer to the nonvarying message */ 5 67 02 io_message_len fixed bin (21); /* Length of message */ 5 68 5 69 /* : Control info overlay for put_to_sleep */ 5 70 dcl mowse_io_sleep_info_ptr 5 71 ptr; 5 72 dcl 01 mowse_io_sleep_info based (mowse_io_sleep_info_ptr), 5 73 02 version char (8), 5 74 02 major_index fixed bin, /* CAT index of sleeper */ 5 75 02 sleep_seconds fixed bin; /* Sleep interval */ 5 76 5 77 /* : Control info for flush_subchannel */ 5 78 dcl mowse_io_flush_subchannel_info_ptr 5 79 ptr; 5 80 dcl 01 mowse_io_flush_subchannel_info 5 81 based (mowse_io_flush_subchannel_info_ptr), 5 82 02 version char (8), 5 83 02 subchannel fixed bin; /* The subchannel to be flushed (BG/FG) */ 5 84 5 85 /* : Control info to set the video mode */ 5 86 dcl mowse_io_set_video_mode_info_ptr 5 87 ptr; 5 88 dcl 01 mowse_io_set_video_mode_info 5 89 based (mowse_io_set_video_mode_info_ptr), 5 90 02 version char (8), 5 91 02 mode bit (1) unal, /* On or off */ 5 92 02 mbz bit (35) unal; 5 93 5 94 /* END INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 1851 6 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 6 2* 6 3* Values for the "access mode" argument so often used in hardcore 6 4* James R. Davis 26 Jan 81 MCR 4844 6 5* Added constants for SM access 4/28/82 Jay Pattin 6 6* Added text strings 03/19/85 Chris Jones 6 7**/ 6 8 6 9 6 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 6 11 dcl ( 6 12 N_ACCESS init ("000"b), 6 13 R_ACCESS init ("100"b), 6 14 E_ACCESS init ("010"b), 6 15 W_ACCESS init ("001"b), 6 16 RE_ACCESS init ("110"b), 6 17 REW_ACCESS init ("111"b), 6 18 RW_ACCESS init ("101"b), 6 19 S_ACCESS init ("100"b), 6 20 M_ACCESS init ("010"b), 6 21 A_ACCESS init ("001"b), 6 22 SA_ACCESS init ("101"b), 6 23 SM_ACCESS init ("110"b), 6 24 SMA_ACCESS init ("111"b) 6 25 ) bit (3) internal static options (constant); 6 26 6 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 6 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 6 29 6 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 6 31 static options (constant); 6 32 6 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 6 34 static options (constant); 6 35 6 36 dcl ( 6 37 N_ACCESS_BIN init (00000b), 6 38 R_ACCESS_BIN init (01000b), 6 39 E_ACCESS_BIN init (00100b), 6 40 W_ACCESS_BIN init (00010b), 6 41 RW_ACCESS_BIN init (01010b), 6 42 RE_ACCESS_BIN init (01100b), 6 43 REW_ACCESS_BIN init (01110b), 6 44 S_ACCESS_BIN init (01000b), 6 45 M_ACCESS_BIN init (00010b), 6 46 A_ACCESS_BIN init (00001b), 6 47 SA_ACCESS_BIN init (01001b), 6 48 SM_ACCESS_BIN init (01010b), 6 49 SMA_ACCESS_BIN init (01011b) 6 50 ) fixed bin (5) internal static options (constant); 6 51 6 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 1852 1853 end ws_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1117.7 ws_.pl1 >udd>sm>ds>w>ml>ws_.pl1 1847 1 08/10/87 1436.7 mowse_info.incl.pl1 >ldd>incl>mowse_info.incl.pl1 1848 2 08/10/87 1436.7 mowse.incl.pl1 >ldd>incl>mowse.incl.pl1 1849 3 08/10/87 1436.7 mowse_mcb.incl.pl1 >ldd>incl>mowse_mcb.incl.pl1 1850 4 08/10/87 1435.9 mowse_messages.incl.pl1 >ldd>incl>mowse_messages.incl.pl1 1851 5 08/10/87 1436.7 mowse_io_control_info.incl.pl1 >ldd>incl>mowse_io_control_info.incl.pl1 1852 6 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>incl>access_mode_values.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. ACCEPT constant fixed bin(17,0) initial dcl 2-54 ref 346 641 ADD_TO_REMOTE_CAT 000016 constant fixed bin(17,0) initial dcl 2-78 set ref 510* BG 000035 constant fixed bin(17,0) initial dcl 4-17 set ref 311* 359* 510* 558* 611* 656* 766* 830* 1303* 1378* 1391* 1470* 1544* 1557* 1600* CAPABILITY_NAME_LENGTH constant fixed bin(17,0) initial dcl 1-27 ref 4-63 178 506 CMD_ID_CNT 000010 internal static fixed bin(17,0) initial dcl 262 set ref 809 810* 810 DELETE_FROM_REMOTE_CAT 000036 constant fixed bin(17,0) initial dcl 2-79 set ref 558* EXECUTE_COMMAND 000017 constant fixed bin(17,0) initial dcl 2-77 set ref 830* FALSE constant bit(1) initial packed unaligned dcl 264 ref 1365 FG 000042 constant fixed bin(17,0) initial dcl 4-19 set ref 1205* 1251* 1653* INTERNAL 000032 constant fixed bin(17,0) initial dcl 2-76 set ref 307* 508* 555* 813* 816* 1144* 1389* 1391* 1463* 1555* 1557* 1706 LAST 000035 constant fixed bin(17,0) initial dcl 2-71 set ref 1391* 1557* LOCAL_SYSTEM 000032 constant fixed bin(17,0) initial dcl 2-30 set ref 448* 710 735 794 813 813* 878 951 980 1353 1388 1391* 1519 1554 1557* 1704 1823 MAXIMUM_BG_SIZE constant fixed bin(17,0) initial dcl 2-44 ref 130 133 1137 1157 1169 1189 1202 MAXIMUM_BUFFER_SIZE 000020 constant fixed bin(17,0) initial dcl 2-43 set ref 484* 484* 486* 493* MAXIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 1-25 ref 1-68 879 904 911 979 MAXIMUM_PACKET_SIZE constant fixed bin(17,0) initial dcl 2-49 ref 113 114 160 1246 1648 MAXIMUM_USER_MINOR constant fixed bin(17,0) initial dcl 2-67 ref 694 MINIMUM_BUFFER_SIZE 000021 constant fixed bin(17,0) initial dcl 2-42 set ref 484* 484* 486* 493* MINIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 1-24 ref 1-68 879 973 MINIMUM_USER_MINOR constant fixed bin(17,0) initial dcl 2-66 ref 694 711 721 PACKET_SIZE constant fixed bin(17,0) initial dcl 2-48 ref 4-155 756 803 PUT_TO_BACKGROUND_BUFFER constant fixed bin(17,0) initial dcl 2-108 ref 1124 1153 1179 PUT_TO_QUERY_MESSAGE_BUFFER constant fixed bin(17,0) initial dcl 2-110 ref 1126 1165 REJECT constant fixed bin(17,0) initial dcl 2-55 ref 346 641 REMOTE_SYSTEM 000025 constant fixed bin(17,0) initial dcl 2-31 set ref 508* 555* 794 816* 951 1144* 1294 1359 1389* 1391* 1463* 1525 1555* 1557* 1832 REQUEST_CONNECT 000007 constant fixed bin(17,0) initial dcl 2-92 set ref 311* REQUEST_DISCONNECT 000006 constant fixed bin(17,0) initial dcl 2-93 set ref 611* RESET_APPLICATION 000012 constant fixed bin(17,0) initial dcl 2-83 set ref 1303* RESET_SUSPEND 000003 constant fixed bin(17,0) initial dcl 2-99 set ref 1391* RESPONSE_CONNECT 000011 constant fixed bin(17,0) initial dcl 2-90 set ref 359* RESPONSE_DISCONNECT 000010 constant fixed bin(17,0) initial dcl 2-91 set ref 656* RESUME_APPLICATION 000014 constant fixed bin(17,0) initial dcl 2-81 set ref 1378* SEND_QUERY constant fixed bin(17,0) initial dcl 2-53 ref 1126 SET_SLEEP_FLAG 000005 constant fixed bin(17,0) initial dcl 2-96 set ref 1470* SET_SUSPEND 000004 constant fixed bin(17,0) initial dcl 2-98 set ref 1557* STATUS_REPLY 000002 constant fixed bin(17,0) initial dcl 2-100 set ref 1251* SUSPEND_APPLICATION 000015 constant fixed bin(17,0) initial dcl 2-80 set ref 1544* TERMINATE_APPLICATION 000013 constant fixed bin(17,0) initial dcl 2-82 set ref 1600* TRUE constant bit(1) initial packed unaligned dcl 263 ref 1294 1297 1531 VERSION 000022 constant char(8) initial packed unaligned dcl 260 ref 428 477 1691 addr builtin function dcl 250 ref 311 311 359 359 413 413 510 510 558 558 656 656 830 830 858 858 963 963 1205 1205 1251 1251 1455 1455 1653 1653 1780 1780 alter_remote_cat_msg 000252 automatic structure level 1 packed packed unaligned dcl 178 set ref 510 510 arg_count 000215 automatic fixed bin(17,0) dcl 145 set ref 1086* 1090 1153 1165 1186 arg_len 000200 automatic fixed bin(21,0) dcl 137 set ref 1096* 1119* 1133* 1137 1155* 1157 1167* 1169 1187* 1189 arg_list_ptr 000212 automatic pointer dcl 143 set ref 1095* 1155* 1167* 1187* arg_ptr 000176 automatic pointer dcl 136 set ref 1096* 1099 1101 1119* 1122 1133* 1136 arguments 000101 automatic varying char dcl 114 set ref 299* 301 302 303 based_caller_name based char(32) packed unaligned dcl 139 ref 1136 based_code based fixed bin(17,0) dcl 141 ref 1122 based_mcb_ptr based pointer dcl 142 ref 1099 1101 byte builtin function dcl 251 ref 358 505 554 655 825 825 caller_name 000202 automatic char(32) packed unaligned dcl 140 set ref 1136* 1196 caller_name_length 000201 automatic fixed bin(21,0) dcl 138 set ref 1137* 1196 1202 cap_index 000220 automatic fixed bin(17,0) dcl 149 set ref 402* 435* 448* 461 466 468 470 472 505 518 545* 554 578 972* 973* 979* 979* 981 984 988 997 1001* cap_num 000221 automatic fixed bin(17,0) dcl 150 set ref 448* 479 868* 879 879 885 894 903 1585* capability_$pack 000106 constant entry external dcl 239 ref 307 448 508 555 813 816 1144 1389 1463 1555 capability_$unpack 000104 constant entry external dcl 237 ref 340 545 685 868 972 1234 1287 1340 1347 1445 1505 1585 1700 1819 capability_name 2 based char(32) level 2 in structure "mcb" packed packed unaligned dcl 3-14 in procedure "ws_" set ref 480* 894 984 1708 capability_name 203 based char(32) array level 3 in structure "mowse_info" dcl 1-31 in procedure "ws_" ref 917 997 capability_number 000371 automatic fixed bin(17,0) dcl 1809 set ref 1819* 1824 1833 capname 000101 automatic varying char(32) dcl 115 set ref 295* 296* 296 297 298 302 303 code 000336 automatic fixed bin(35,0) dcl 1682 set ref 1700* 1702 com_err_$convert_status_code_ 000020 constant entry external dcl 186 ref 1180 connect_request_len 000100 automatic fixed bin(17,0) dcl 112 set ref 298* 303* 311* connect_request_string 000101 automatic char packed unaligned dcl 113 set ref 297* 302* 311 311 cu_$arg_count 000030 constant entry external dcl 194 ref 1086 cu_$arg_list_ptr 000026 constant entry external dcl 193 ref 1095 cu_$arg_ptr 000024 constant entry external dcl 191 ref 1096 1119 1133 data_block_ptr 24 based pointer level 2 dcl 3-14 set ref 482* data_length 000100 automatic fixed bin(17,0) dcl 1638 set ref 1648* 1650 1651 1653* data_overlay based char packed unaligned dcl 1641 ref 1650 destination 000222 automatic fixed bin(17,0) dcl 151 set ref 307* 311* 508* 510* 555* 558* 813* 816* 830* 1144* 1205* 1463* 1470* ecode 000223 automatic fixed bin(35,0) dcl 152 set ref 1105* 1106 1122* 1124 1126 1180* entry_point 000224 automatic entry variable dcl 153 set ref 441* 481 entry_var 20 based entry variable level 2 dcl 3-14 set ref 481* errcode 000214 automatic fixed bin(35,0) dcl 144 set ref 1085* 1086* 1096* 1097 1119* 1120 1133* 1134 1144* 1146 1205* error_table_$no_table 000042 external static fixed bin(35,0) dcl 206 ref 1779 error_table_$unimplemented_version 000040 external static fixed bin(35,0) dcl 204 ref 429 1692 fatal_error_info 000360 automatic structure level 1 dcl 1769 set ref 1780 1780 fatal_mowse_trap_ 000114 constant entry external dcl 243 ref 314 362 562 614 659 769 833 1255 1306 1381 1448 1466 1547 1603 1656 find_free_cat_entry_ 000110 constant entry external dcl 241 ref 435 find_mowse_io_ 000076 constant entry external dcl 233 ref 407 853 958 1775 first_byte 000136 automatic fixed bin(17,0) dcl 125 set ref 824* 825 825 flags 2 based structure array level 3 in structure "mowse_info" dcl 1-31 in procedure "ws_" flags 213 based structure array level 3 in structure "mowse_info" dcl 1-31 in procedure "ws_" formatted_string 000174 automatic char packed unaligned dcl 130 set ref 1155* 1167* 1187* 1196 formatted_string_length 000174 automatic fixed bin(17,0) dcl 131 set ref 1139* 1157* 1169* 1189* 1196 1202 1246* 1251* get_mowse_info_ptr_ 000100 constant entry external dcl 234 ref 421 get_system_free_area_ 000032 constant entry external dcl 195 ref 456 hcs_$make_entry 000034 constant entry external dcl 196 ref 441 i 000230 automatic fixed bin(17,0) dcl 154 set ref 903* 904 904 907* 907 911 917 in_space based char packed unaligned dcl 155 ref 484 inbuff 26 based pointer level 2 dcl 3-14 set ref 484* 568 572* inbuff_data_length 15 based fixed bin(17,0) level 2 dcl 3-14 set ref 491* 569 inbuff_length 13 based fixed bin(17,0) level 2 dcl 3-14 set ref 486* inbuff_position_index 14 based fixed bin(17,0) level 2 dcl 3-14 set ref 490* info_ptr 4 000240 automatic pointer level 2 dcl 171 set ref 862 968 input_buffer_data based char packed unaligned dcl 166 ref 570 input_buffer_length 000236 automatic fixed bin(17,0) dcl 165 set ref 569* 570 570 ioa_$general_rs 000022 constant entry external dcl 189 ref 1155 1167 1187 iocb_ptr 34 based pointer level 2 dcl 3-14 set ref 478* 1455* iox_$close 000014 constant entry external dcl 184 ref 1776 iox_$control 000012 constant entry external dcl 183 ref 413 858 963 1455 length parameter fixed bin(17,0) dcl 1733 in procedure "get_buff_length" ref 1729 1737 1739 1741 length builtin function dcl 252 in procedure "ws_" ref 298 301 303 303 506 510 803 830 1182 1246 local_cat 2 based structure array level 2 dcl 1-31 longinfo 000140 automatic char(100) dcl 127 set ref 1180* 1182 1182 1196 longinfo_length 000137 automatic fixed bin(17,0) dcl 126 set ref 1140* 1182* 1182* 1196 1202 major 000252 automatic char(1) level 2 in structure "alter_remote_cat_msg" packed packed unaligned dcl 178 in procedure "ws_" set ref 505* 554* 558 558 major 000340 automatic fixed bin(17,0) dcl 1684 in procedure "check_mcb_ptr" set ref 1700* 1706 1713 major_capability 202 based fixed bin(17,0) array level 3 in structure "mowse_info" dcl 1-31 in procedure "ws_" ref 904 1001 1833 major_capability 12 based fixed bin(17,0) level 2 in structure "mcb" dcl 3-14 in procedure "ws_" set ref 479* 545* 988 1287* 1340* 1445* 1700* major_index 2 000246 automatic fixed bin(17,0) level 2 dcl 173 set ref 1453* major_name 0(09) 000252 automatic char level 2 packed packed unaligned dcl 178 set ref 506* major_num 000231 automatic fixed bin(17,0) dcl 159 set ref 340* 685* 711 711 721 721 736 743 1234* 1287* 1294 1297 1347* 1354 1360 1365 1391* 1445* 1453 1473 1505* 1520 1526 1531 1557* max parameter fixed bin(17,0) dcl 1735 ref 1729 1739 1739 mcb based structure level 1 unaligned dcl 3-14 set ref 457 516 576 mcb_ptr 4 based pointer array level 3 in structure "mowse_info" dcl 1-31 in procedure "ws_" set ref 461* 518* 578* 885 894 981 984 988 1713 1824 mcb_ptr 2 000240 automatic pointer level 2 in structure "mio_info" dcl 171 in procedure "ws_" set ref 417 message_len 000254 automatic fixed bin(17,0) initial dcl 4-33 set ref 4-33* message_str 000232 automatic char packed unaligned dcl 160 set ref 825* 830 830 min parameter fixed bin(17,0) dcl 1734 in procedure "get_buff_length" ref 1729 1737 1737 min builtin function dcl 248 in procedure "ws_" ref 1137 1157 1169 1189 1202 1246 1648 minor_num 000135 automatic fixed bin(17,0) dcl 124 set ref 1124* 1126* 1128* 1153 1165 1178 1179* 1205* mio_info 000240 automatic structure level 1 unaligned dcl 171 set ref 413 413 858 858 963 963 mio_sleep 000246 automatic structure level 1 unaligned dcl 173 set ref 1455 1455 mowse_info based structure level 1 dcl 1-31 mowse_info_ptr 000130 automatic pointer dcl 121 in procedure "ws_" set ref 294* 421* 425 428 435* 461 466 468 470 472 500 518 549* 578 604* 605* 648* 649* 690* 702* 711 711 721 721 736 743 800* 862* 863 885 894 904 917 968* 969 981 984 988 997 1001 1111* 1230* 1240* 1281* 1294 1297 1339* 1354 1360 1365 1433* 1473 1511* 1512 1520 1526 1531 1591* 1593* 1696* 1697 1713 mowse_info_ptr 36 based pointer level 2 in structure "mcb" dcl 3-14 in procedure "ws_" set ref 294 351* 500* 549 604 648 690 800 1111 1230 1281 1339 1433 1511 1591 1696 mowse_io_info based structure level 1 unaligned dcl 5-40 mowse_io_info_version_1 000000 constant char(8) initial packed unaligned dcl 5-27 ref 412 857 962 1452 mowse_io_sleep_info based structure level 1 unaligned dcl 5-72 mowse_iocb_ptr 000114 automatic pointer dcl 117 in procedure "ws_" set ref 407* 413* 478 853* 858* 958* 963* mowse_iocb_ptr 000356 automatic pointer dcl 1768 in procedure "null_mowse_info_handler" set ref 1775* 1776* mowse_mcb_ptr 000112 automatic pointer dcl 116 set ref 417* 421* 510* null builtin function dcl 249 ref 425 441 441 498 499 517 518 571 572 577 578 611 611 756 863 885 969 981 1099 1303 1303 1378 1378 1391 1391 1470 1470 1512 1544 1544 1557 1557 1600 1600 1688 1697 1814 outbuff_length 16 based fixed bin(17,0) level 2 dcl 3-14 set ref 493* 756 outbuff_list_end 32 based pointer level 2 dcl 3-14 set ref 499* outbuff_list_start 30 based pointer level 2 dcl 3-14 set ref 498* 756 p_args parameter char packed unaligned dcl 86 ref 283 299 p_capability_id parameter fixed bin(17,0) dcl 1802 set ref 1789 1819* p_capability_name parameter char packed unaligned dcl 93 set ref 283 295 397 441* 480 506 506 510 848 894* 917* 944 1007 p_capability_number parameter fixed bin(17,0) dcl 89 set ref 593 605* 611* p_channel parameter fixed bin(17,0) dcl 1628 ref 1617 p_cmd_id parameter fixed bin(17,0) dcl 108 set ref 784 809* 824 825 p_code parameter fixed bin(35,0) dcl 1805 in procedure "verify_capability" set ref 1789 1812* 1815* 1819* 1821 1824* 1827 1828* 1836* 1840* p_code parameter fixed bin(35,0) dcl 1629 in procedure "send_bg" set ref 1617 1653* 1655 1656* p_code parameter fixed bin(35,0) dcl 1679 in procedure "check_mcb_ptr" set ref 1672 1687* 1692* 1710* 1716* p_code parameter fixed bin(35,0) dcl 109 in procedure "ws_" set ref 283 286* 290* 291 307* 308 311* 313 314* 329 332* 334* 335 340* 341 347* 351* 353 359* 361 362* 397 401* 407* 408 413* 415 421* 422 429* 435* 436 441* 443 448* 449 450* 508* 510* 514 515* 535 538* 540* 541 545* 555* 558* 561 562* 581* 593 596* 598* 599 605* 606 611* 613 614* 630 633* 635* 636 642* 649* 650 656* 658 659* 674 679* 681* 682 685* 686 696* 702* 703 717* 728* 739* 746* 760* 766* 768 769* 784 787* 789* 790 795* 804* 813* 816* 819 830* 832 833* 848 851* 853* 854 858* 860 868* 869 870* 881* 888* 912* 920* 944 947* 952* 958* 959 963* 965 972* 973 978* 1015* 1031 1033* 1049 1051* 1219 1224* 1225 1234* 1235 1240* 1241 1251* 1254 1255* 1270 1275* 1276 1287* 1289 1303* 1305 1306* 1326 1329* 1333* 1334 1340* 1342 1347* 1348 1354* 1360* 1369* 1372 1378* 1380 1381* 1391* 1406 1408* 1420 1423* 1427* 1428 1438* 1445* 1447 1448* 1455* 1457 1463* 1465 1466* 1470* 1492 1495* 1499* 1500 1505* 1506 1513* 1520* 1526* 1535* 1538 1544* 1546 1547* 1557* 1574 1577* 1578* 1579 1585* 1586 1593* 1594 1600* 1602 1603* p_command parameter char packed unaligned dcl 94 ref 784 803 825 830 p_data_block_ptr parameter pointer dcl 95 ref 397 482 p_data_len parameter fixed bin(17,0) dcl 1630 in procedure "send_bg" ref 1617 1640 1647 1648 1650 p_data_len parameter fixed bin(17,0) dcl 96 in procedure "ws_" set ref 674 756 756 766* p_data_ptr parameter pointer dcl 97 in procedure "ws_" set ref 674 766* p_data_ptr parameter pointer dcl 1631 in procedure "send_bg" ref 1617 1650 p_entry_name parameter char packed unaligned dcl 98 set ref 397 441* p_inbuff_length parameter fixed bin(17,0) dcl 99 set ref 397 484* 484* 486* p_major parameter fixed bin(17,0) dcl 100 in procedure "ws_" set ref 329 340* 351* 359* 630 649* 656* 674 685* 702* 766* 848 868* 904 944 972* 1008* 1049 1219 1234* 1240* 1251* 1270 1303* 1326 1347* 1378* 1406 1492 1505* 1544* 1574 1585* 1593* 1600* p_major parameter fixed bin(17,0) dcl 1632 in procedure "send_bg" set ref 1617 1653* p_mcb_ptr parameter pointer dcl 101 in procedure "ws_" set ref 283 290* 294 311* 329 334* 351 359* 397 457* 461 477 478 479 480 481 482 484 486 490 491 493 498 499 500 516 517* 535 540* 545 549 558* 568 569 572 574* 576 577* 593 598* 604 611* 630 635* 648 656* 674 681* 690 756 756 766* 784 789* 800 830* 1219 1224* 1230 1251* 1270 1275* 1281 1287 1303* 1326 1333* 1339 1340 1378* 1391* 1420 1427* 1433 1445 1455 1470* 1492 1499* 1511 1544* 1557* 1574 1578* 1591 1600* p_mcb_ptr parameter pointer dcl 1634 in procedure "send_bg" set ref 1617 1653* p_mcb_ptr parameter pointer dcl 1676 in procedure "check_mcb_ptr" ref 1672 1688 1691 1696 1700 1708 1713 p_minor parameter fixed bin(17,0) dcl 102 in procedure "ws_" set ref 674 694 694 711 721 766* p_minor parameter fixed bin(17,0) dcl 1633 in procedure "send_bg" set ref 1617 1653* p_mowse_info_ptr parameter pointer dcl 1801 ref 1789 1814 1824 1833 p_outbuff_length parameter fixed bin(17,0) dcl 103 set ref 397 493* p_reply_string parameter char packed unaligned dcl 87 ref 1031 1406 p_status parameter fixed bin(17,0) dcl 88 ref 329 346 346 358 630 641 641 655 p_status_request parameter char packed unaligned dcl 92 ref 1049 p_status_result parameter char packed unaligned dcl 91 set ref 1049 1219 1246 1251 1251 p_system parameter fixed bin(17,0) dcl 104 set ref 283 307* 784 794 794 813 944 951 951 980 p_time parameter fixed bin(35,0) dcl 90 ref 1420 1437 1454 1473 release_outbuffer_ 000112 constant entry external dcl 242 ref 574 remote_cat 202 based structure array level 2 dcl 1-31 reset 2 based bit(1) array level 4 in structure "mowse_info" packed packed unaligned dcl 1-31 in procedure "ws_" set ref 466* 711 1297* reset 213 based bit(1) array level 4 in structure "mowse_info" packed packed unaligned dcl 1-31 in procedure "ws_" set ref 721 1294* result_string 000175 automatic char packed unaligned dcl 133 set ref 1196* 1205 1205 result_string_length 000175 automatic fixed bin(17,0) dcl 134 set ref 1202* 1205* round builtin function dcl 253 ref 824 rtrim builtin function dcl 254 ref 296 301 302 303 1007 search_name 000120 automatic char(32) packed unaligned dcl 120 set ref 984* 993* 997* 1007 1707* 1708 send_data 000102 automatic char packed unaligned dcl 1640 set ref 1650* 1653 1653 send_data_pos 000101 automatic fixed bin(17,0) dcl 1639 set ref 1645* 1647 1648 1650 1651* 1651 send_mowse_message_ 000074 constant entry external dcl 230 ref 1391 1557 send_msg_ 000102 constant entry external dcl 235 ref 311 359 510 558 611 656 766 830 1251 1303 1378 1470 1544 1600 1653 shortinfo 000172 automatic char(8) dcl 128 set ref 1180* sleep_seconds 3 000246 automatic fixed bin(17,0) level 2 dcl 173 set ref 1454* sleep_time 213(02) based bit(1) array level 4 in structure "mowse_info" packed packed unaligned dcl 1-31 in procedure "ws_" ref 743 sleep_time 3 based fixed bin(17,0) array level 3 in structure "mowse_info" dcl 1-31 in procedure "ws_" set ref 472* 736 1473* source_major 000232 automatic fixed bin(17,0) dcl 162 set ref 1340* source_system 000233 automatic fixed bin(17,0) dcl 163 set ref 1340* status 2(02) based bit(1) array level 4 packed packed unaligned dcl 1-31 set ref 470* status_code 1 000360 automatic fixed bin(35,0) level 2 dcl 1769 set ref 1779* substr builtin function dcl 255 ref 506 1182 1196 1196 1196 1650 suspended 2(01) based bit(1) array level 4 in structure "mowse_info" packed packed unaligned dcl 1-31 in procedure "ws_" set ref 468* 711 1354 1520 suspended 213(01) based bit(1) array level 4 in structure "mowse_info" packed packed unaligned dcl 1-31 in procedure "ws_" set ref 721 1360 1365* 1526 1531* sysid 000117 automatic fixed bin(17,0) dcl 119 set ref 340* 545* 685* 710 735 868* 878 972* 1234* 1287* 1294 1347* 1353 1359 1388 1445* 1505* 1519 1525 1554 1585* system 000337 automatic fixed bin(17,0) dcl 1683 set ref 1700* 1704 system_free_area based area(1024) dcl 146 ref 457 484 system_free_area_ptr 000216 automatic pointer dcl 148 set ref 456* 457 484 system_id 000370 automatic fixed bin(17,0) dcl 1808 set ref 1819* 1823 1832 temp_buff_ptr 000234 automatic pointer dcl 164 set ref 568* 570 571* temp_char 000134 automatic char(1) packed unaligned dcl 123 set ref 358* 359 359 655* 656 656 temp_major 000116 automatic fixed bin(17,0) dcl 118 set ref 988* 1001* 1008 1389* 1555* temp_mcb_ptr 000132 automatic pointer dcl 122 set ref 1101* 1105* 1111 1205* temp_seg_name 000252 automatic char(6) initial packed unaligned dcl 2-22 set ref 2-22* terminate_process_ 000016 constant entry external dcl 185 ref 1780 version 000246 automatic char(8) level 2 in structure "mio_sleep" packed packed unaligned dcl 173 in procedure "ws_" set ref 1452* version based char(8) level 2 in structure "mowse_info" dcl 1-31 in procedure "ws_" ref 428 version 000240 automatic char(8) level 2 in structure "mio_info" packed packed unaligned dcl 171 in procedure "ws_" set ref 412* 857* 962* version based char(8) level 2 in structure "mcb" packed packed unaligned dcl 3-14 in procedure "ws_" set ref 477* 1691 version 000360 automatic fixed bin(17,0) level 2 in structure "fatal_error_info" dcl 1769 in procedure "null_mowse_info_handler" set ref 1778* ws_error_$buffer_overflow 000072 external static fixed bin(35,0) dcl 226 ref 760 804 ws_error_$cant_create_instance 000052 external static fixed bin(35,0) dcl 212 ref 450 515 ws_error_$invalid_capability_name 000062 external static fixed bin(35,0) dcl 219 ref 1015 ws_error_$invalid_capability_number 000064 external static fixed bin(35,0) dcl 221 ref 870 881 888 912 1815 1828 1836 1840 ws_error_$invalid_connect_status 000044 external static fixed bin(35,0) dcl 207 ref 347 642 ws_error_$invalid_mcb 000066 external static fixed bin(35,0) dcl 223 ref 1513 1687 ws_error_$invalid_minor_capability 000054 external static fixed bin(35,0) dcl 214 ref 696 ws_error_$invalid_sleep_interval 000036 external static fixed bin(35,0) dcl 200 ref 1438 ws_error_$invalid_system_id 000070 external static fixed bin(35,0) dcl 224 ref 795 952 1369 1535 ws_error_$not_available 000046 external static fixed bin(35,0) dcl 209 ref 1033 1051 1408 ws_error_$not_suspended 000060 external static fixed bin(35,0) dcl 217 ref 1354 1360 ws_error_$sleeping 000050 external static fixed bin(35,0) dcl 211 ref 739 746 ws_error_$suspended 000056 external static fixed bin(35,0) dcl 216 ref 717 728 1520 1526 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 CONTINUE internal static fixed bin(17,0) initial dcl 2-94 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 6-33 EXECUTE_CAPABILITY_REPLY internal static fixed bin(17,0) initial dcl 2-73 EXECUTE_COMMAND_REPLY internal static fixed bin(17,0) initial dcl 2-72 E_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 FAIL_CAPABILITY internal static fixed bin(17,0) initial dcl 2-75 FG_BREAK internal static fixed bin(17,0) initial dcl 2-105 FG_CONTROL_MESSAGE internal static fixed bin(17,0) initial dcl 2-104 FG_MORE_DATA internal static fixed bin(17,0) initial dcl 2-107 FG_TERMINAL_DATA internal static fixed bin(17,0) initial dcl 2-106 MAXIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 2-65 MINIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 2-64 MORE internal static fixed bin(17,0) initial dcl 2-95 MOWSE_VERSION_ internal static char(8) initial packed unaligned dcl 2-26 M_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 OVERFLOWED_BUFFER internal static fixed bin(17,0) initial dcl 2-87 QUERY_REPLY internal static fixed bin(17,0) initial dcl 2-89 RECEIVE internal static fixed bin(17,0) initial dcl 2-59 RESET_REPLY internal static fixed bin(17,0) initial dcl 2-84 RESET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 2-97 REW_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 6-30 SEND internal static fixed bin(17,0) initial dcl 2-60 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 STATUS internal static fixed bin(17,0) initial dcl 2-86 STATUS_FAILED internal static fixed bin(8,0) initial dcl 2-37 STATUS_SUCCESS internal static fixed bin(8,0) initial dcl 2-35 SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 2-88 S_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 WAKE_UP internal static fixed bin(17,0) initial dcl 2-85 W_ACCESS internal static bit(3) initial packed unaligned dcl 6-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 alter_cat_message based structure level 1 packed packed unaligned dcl 4-63 event_message based structure level 1 packed packed unaligned dcl 4-76 execom_message based structure level 1 packed packed unaligned dcl 4-49 execom_reply_msg based structure level 1 packed packed unaligned dcl 4-122 init_mowse_info based structure level 1 unaligned dcl 1-68 init_mowse_info_ptr automatic pointer dcl 1-67 input_message based structure level 1 packed packed unaligned dcl 4-38 last_message based structure level 1 packed packed unaligned dcl 4-110 message_node based structure level 1 unaligned dcl 4-136 message_ptr automatic pointer dcl 4-34 more_remaining_message based structure level 1 packed packed unaligned dcl 4-96 mowse_io_debug_info based structure level 1 unaligned dcl 5-48 mowse_io_debug_info_ptr automatic pointer dcl 5-46 mowse_io_flush_subchannel_info based structure level 1 unaligned dcl 5-80 mowse_io_flush_subchannel_info_ptr automatic pointer dcl 5-78 mowse_io_info_ptr automatic pointer dcl 5-39 mowse_io_message based structure level 1 unaligned dcl 5-63 mowse_io_message_ptr automatic pointer dcl 5-62 mowse_io_set_video_mode_info based structure level 1 packed packed unaligned dcl 5-88 mowse_io_set_video_mode_info_ptr automatic pointer dcl 5-86 mowse_io_sleep_info_ptr automatic pointer dcl 5-70 mowse_io_store_info based structure level 1 unaligned dcl 5-34 mowse_io_store_info_ptr automatic pointer dcl 5-32 mowse_io_terminal_state based structure level 1 packed packed unaligned dcl 5-55 mowse_io_terminal_state_ptr automatic pointer dcl 5-53 msg_node_ptr automatic pointer dcl 4-135 open_struc based structure level 1 packed packed unaligned dcl 1-92 open_struc_ptr automatic pointer dcl 1-91 output_buffer based structure level 1 unaligned dcl 3-34 part_msg based char packed unaligned dcl 4-152 part_msg_length automatic fixed bin(17,0) dcl 4-151 part_msg_ptr automatic pointer dcl 4-144 partial_message based structure level 1 unaligned dcl 4-145 request_more_message based structure level 1 packed packed unaligned dcl 4-84 trace_message_info automatic structure level 1 unaligned dcl 4-155 ws_error_$inconsistent_mowse_tables external static fixed bin(35,0) dcl 202 NAMES DECLARED BY EXPLICIT CONTEXT. check_mcb_ptr 005706 constant entry internal dcl 1672 ref 290 334 540 598 635 681 789 1105 1224 1275 1333 1427 1499 1578 1824 connect_request 000174 constant entry external dcl 283 connect_response 000454 constant entry external dcl 329 create_instance 000627 constant entry external dcl 397 destroy_instance 001356 constant entry external dcl 535 disconnect_request 001557 constant entry external dcl 593 disconnect_response 001672 constant entry external dcl 630 execute_capability 002030 constant entry external dcl 674 execute_command 002315 constant entry external dcl 784 find_capability_name 002555 constant entry external dcl 848 find_capability_number 003014 constant entry external dcl 944 get_background_message 003264 constant entry external dcl 1031 get_buff_length 006021 constant entry internal dcl 1729 ref 484 484 486 493 get_status 003314 constant entry external dcl 1049 null_mowse_info_handler 006040 constant entry internal dcl 1751 ref 425 863 969 put_background_message 003346 constant entry external dcl 1080 put_status 004144 constant entry external dcl 1219 reset_capability 004311 constant entry external dcl 1270 resume_capability 004444 constant entry external dcl 1326 send_bg 005600 constant entry internal dcl 1617 ref 1205 send_query_reply 004724 constant entry external dcl 1406 sleep 004755 constant entry external dcl 1420 suspend_capability 005202 constant entry external dcl 1492 terminate_capability 005447 constant entry external dcl 1574 verify_capability 006114 constant entry internal dcl 1789 ref 351 605 649 702 1240 1593 ws_ 000160 constant entry external dcl 61 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7140 7256 6241 7150 Length 7736 6241 116 444 676 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ws_ 406 external procedure is an external procedure. send_bg 88 internal procedure uses auto adjustable storage. check_mcb_ptr internal procedure shares stack frame of external procedure ws_. get_buff_length internal procedure shares stack frame of external procedure ws_. null_mowse_info_handler internal procedure shares stack frame of external procedure ws_. verify_capability internal procedure shares stack frame of external procedure ws_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 CMD_ID_CNT ws_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME send_bg 000100 data_length send_bg 000101 send_data_pos send_bg 000102 send_data send_bg ws_ 000100 connect_request_len ws_ 000101 capname ws_ 000101 connect_request_string ws_ 000101 arguments ws_ 000112 mowse_mcb_ptr ws_ 000114 mowse_iocb_ptr ws_ 000116 temp_major ws_ 000117 sysid ws_ 000120 search_name ws_ 000130 mowse_info_ptr ws_ 000132 temp_mcb_ptr ws_ 000134 temp_char ws_ 000135 minor_num ws_ 000136 first_byte ws_ 000137 longinfo_length ws_ 000140 longinfo ws_ 000172 shortinfo ws_ 000174 formatted_string_length ws_ 000174 formatted_string ws_ 000175 result_string ws_ 000175 result_string_length ws_ 000176 arg_ptr ws_ 000200 arg_len ws_ 000201 caller_name_length ws_ 000202 caller_name ws_ 000212 arg_list_ptr ws_ 000214 errcode ws_ 000215 arg_count ws_ 000216 system_free_area_ptr ws_ 000220 cap_index ws_ 000221 cap_num ws_ 000222 destination ws_ 000223 ecode ws_ 000224 entry_point ws_ 000230 i ws_ 000231 major_num ws_ 000232 source_major ws_ 000232 message_str ws_ 000233 source_system ws_ 000234 temp_buff_ptr ws_ 000236 input_buffer_length ws_ 000240 mio_info ws_ 000246 mio_sleep ws_ 000252 alter_remote_cat_msg ws_ 000252 temp_seg_name ws_ 000254 message_len ws_ 000336 code check_mcb_ptr 000337 system check_mcb_ptr 000340 major check_mcb_ptr 000356 mowse_iocb_ptr null_mowse_info_handler 000360 fatal_error_info null_mowse_info_handler 000370 system_id verify_capability 000371 capability_number verify_capability THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this return_mac alloc_auto_adj shorten_stack ext_entry ext_entry_desc int_entry round_fx2 divide_fx1 op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. capability_$pack capability_$unpack com_err_$convert_status_code_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr fatal_mowse_trap_ find_free_cat_entry_ find_mowse_io_ get_mowse_info_ptr_ get_system_free_area_ hcs_$make_entry ioa_$general_rs iox_$close iox_$control release_outbuffer_ send_mowse_message_ send_msg_ terminate_process_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$no_table error_table_$unimplemented_version ws_error_$buffer_overflow ws_error_$cant_create_instance ws_error_$invalid_capability_name ws_error_$invalid_capability_number ws_error_$invalid_connect_status ws_error_$invalid_mcb ws_error_$invalid_minor_capability ws_error_$invalid_sleep_interval ws_error_$invalid_system_id ws_error_$not_available ws_error_$not_suspended ws_error_$sleeping ws_error_$suspended LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 113 000067 114 000076 130 000106 133 000115 160 000124 178 000133 2 22 000140 4 33 000142 1155 000144 1167 000147 1187 000152 61 000157 270 000166 283 000167 286 000223 290 000224 291 000234 294 000236 295 000242 296 000256 297 000274 298 000302 299 000304 301 000317 302 000333 303 000364 307 000370 308 000405 311 000407 313 000434 314 000436 315 000445 318 000446 329 000447 332 000471 334 000472 335 000502 340 000504 341 000521 346 000523 347 000531 348 000534 351 000535 353 000551 358 000553 359 000557 361 000606 362 000610 363 000617 366 000620 397 000621 401 000654 402 000655 407 000656 408 000667 412 000671 413 000673 415 000725 417 000727 421 000731 422 000744 425 000746 428 000753 429 000760 430 000763 435 000764 436 000777 441 001001 443 001036 448 001040 449 001055 450 001057 451 001062 456 001063 457 001072 461 001077 466 001103 468 001105 470 001107 472 001111 477 001112 478 001117 479 001121 480 001125 481 001135 482 001141 484 001145 486 001173 490 001212 491 001215 493 001216 498 001233 499 001237 500 001242 505 001246 506 001252 508 001264 510 001302 514 001332 515 001334 516 001337 517 001341 518 001343 522 001351 535 001352 538 001371 540 001372 541 001402 545 001404 549 001423 554 001427 555 001433 558 001450 561 001477 562 001501 563 001510 568 001511 569 001515 570 001517 571 001523 572 001525 574 001530 576 001537 577 001541 578 001543 581 001551 582 001552 593 001553 596 001572 598 001573 599 001603 604 001605 605 001611 606 001624 611 001626 613 001655 614 001657 615 001666 618 001667 630 001670 633 001707 635 001710 636 001720 641 001722 642 001730 643 001733 648 001734 649 001740 650 001752 655 001754 656 001760 658 002007 659 002011 660 002020 663 002021 674 002022 679 002045 681 002046 682 002056 685 002060 686 002075 690 002077 694 002103 696 002111 697 002114 702 002115 703 002127 710 002131 711 002134 717 002152 718 002155 720 002156 721 002157 728 002175 729 002200 735 002201 736 002204 739 002211 740 002214 742 002215 743 002216 746 002225 747 002230 756 002231 760 002246 761 002251 766 002252 768 002275 769 002277 770 002306 773 002307 784 002310 787 002340 789 002341 790 002351 794 002353 795 002360 796 002363 800 002364 803 002370 804 002373 805 002376 809 002377 810 002403 813 002404 816 002424 819 002440 824 002442 825 002452 830 002505 832 002536 833 002540 834 002547 837 002550 848 002551 851 002575 853 002576 854 002607 857 002611 858 002613 860 002645 862 002647 863 002651 868 002656 869 002673 870 002675 871 002700 878 002701 879 002704 881 002711 882 002714 885 002715 888 002724 889 002727 894 002730 898 002742 903 002743 904 002745 907 002761 908 002762 911 002763 912 002766 913 002771 917 002772 920 003005 921 003006 944 003007 947 003036 951 003037 952 003044 953 003047 958 003050 959 003061 962 003063 963 003065 965 003117 968 003121 969 003123 972 003130 973 003145 978 003151 979 003152 980 003161 981 003164 984 003174 988 003201 992 003203 993 003204 995 003207 997 003210 1001 003217 1007 003222 1008 003247 1009 003251 1011 003252 1015 003254 1016 003257 1031 003260 1033 003303 1034 003306 1049 003307 1051 003341 1052 003344 1080 003345 1085 003354 1086 003355 1090 003366 1095 003372 1096 003401 1097 003420 1099 003422 1101 003426 1105 003431 1106 003433 1111 003435 1119 003440 1120 003457 1122 003461 1124 003463 1126 003467 1128 003474 1133 003476 1134 003515 1136 003517 1137 003523 1139 003530 1140 003531 1144 003532 1146 003547 1153 003551 1155 003557 1157 003625 1165 003632 1167 003640 1169 003706 1178 003713 1179 003716 1180 003720 1182 003733 1184 003745 1186 003750 1187 003753 1189 004021 1196 004026 1202 004101 1205 004112 1208 004136 1219 004137 1224 004166 1225 004176 1230 004200 1234 004204 1235 004221 1240 004223 1241 004235 1246 004237 1251 004247 1254 004274 1255 004276 1256 004305 1259 004306 1270 004307 1275 004326 1276 004336 1281 004340 1287 004344 1289 004361 1294 004363 1297 004374 1303 004401 1305 004427 1306 004431 1307 004440 1310 004441 1326 004442 1329 004461 1333 004462 1334 004472 1339 004474 1340 004500 1342 004515 1347 004517 1348 004534 1353 004536 1354 004541 1358 004552 1359 004553 1360 004555 1365 004567 1368 004572 1369 004573 1372 004576 1378 004600 1380 004626 1381 004630 1382 004637 1388 004640 1389 004643 1391 004661 1395 004717 1406 004720 1408 004745 1409 004750 1420 004751 1423 004770 1427 004771 1428 005001 1433 005003 1437 005007 1438 005012 1439 005015 1445 005016 1447 005033 1448 005035 1449 005044 1452 005045 1453 005047 1454 005051 1455 005054 1457 005111 1463 005113 1465 005130 1466 005132 1467 005141 1470 005142 1473 005170 1476 005177 1492 005200 1495 005217 1499 005220 1500 005230 1505 005232 1506 005247 1511 005251 1512 005255 1513 005261 1514 005264 1519 005265 1520 005270 1524 005300 1525 005301 1526 005303 1531 005314 1534 005317 1535 005320 1538 005323 1544 005325 1546 005353 1547 005355 1548 005364 1554 005365 1555 005370 1557 005406 1561 005444 1574 005445 1577 005464 1578 005465 1579 005475 1585 005477 1586 005514 1591 005516 1593 005522 1594 005534 1600 005536 1602 005564 1603 005566 1604 005575 1607 005576 1617 005577 1640 005605 1645 005615 1647 005617 1648 005624 1650 005633 1651 005643 1653 005644 1655 005671 1656 005674 1657 005703 1659 005704 1660 005705 1672 005706 1687 005710 1688 005713 1691 005720 1692 005726 1693 005730 1696 005731 1697 005733 1700 005740 1702 005757 1704 005762 1706 005766 1707 005771 1708 005774 1710 006004 1711 006005 1713 006006 1716 006017 1717 006020 1729 006021 1737 006023 1739 006031 1741 006036 1751 006040 1775 006041 1776 006053 1778 006065 1779 006066 1780 006071 1782 006113 1789 006114 1812 006116 1814 006117 1815 006123 1816 006126 1819 006127 1821 006145 1823 006151 1824 006154 1827 006172 1828 006175 1829 006200 1831 006201 1832 006202 1833 006204 1836 006212 1837 006215 1839 006216 1840 006217 1842 006222 ----------------------------------------------------------- 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