1 11/28/86  pc_mowse_
   2 
   3 
   4 This is a collection of subroutines (found in pc_mowse_.archive)
   5 which provide a subroutine interface for the applications writer
   6 to PC MOWSE.
   7 
   8 
   9 Entry points in pc_mowse_:
  10    (List is generated by the help command)
  11 
  12 
  13 :Entry:  conrqst:  11/28/86  conrqst
  14 
  15 
  16 Function:
  17 Requests a connection to an application which has been
  18 loaded by sending a "WSRQSTCN" minor capability to the requested
  19 application.
  20 
  21 
  22 Syntax:
  23 int conrqst(cap_name,args,system,mcb_ptr);
  24     char *cap_name;
  25     char *args;
  26     int system;
  27     mcb *mcb_ptr;
  28 
  29 
  30 Arguments:
  31 cap_name (Input)
  32     The name of the capability to be connected.
  33 args (Input)
  34     Any command line arguments which may be necessary if the
  35     capability is to be started before the connection is made.
  36 system (Input)
  37     The system of the capability being connected to.
  38 mcb_ptr  (Input)
  39     The pointer to the application's MOWSE Control Block
  40     assigned by a call to cretinst.
  41 
  42 
  43 Returns:
  44 0        - no error
  45 Or an error code defined in the appendix.
  46 
  47 
  48 Examples:
  49 ecode = conrqst ("bft", "load", WSREMOTE, mcb_ptr);
  50 
  51 
  52 :Entry:  conresp:  11/28/86  conresp
  53 
  54 
  55 Function:
  56 Replies to an application's request for a connection.  This
  57 allows the application of the conrqst call to be notified
  58 either of this application's acceptance of the connect request (by
  59 supplying the new major capability_number) or rejection of the
  60 request (by supplying an error code).  The application which
  61 made the request for connection will receive WSRESPCN which
  62 will indicate the success or fail of the request.
  63 
  64 
  65 Syntax:
  66 int conresp (status,cap_num,mcb_ptr);
  67     int status,
  68         cap_num;
  69         mcb_ptr,
  70 
  71 
  72 Arguments:
  73 status  (Input)
  74     The acceptance/rejectance of the connect request.
  75     Values WSACCEPT
  76             WSREJECT
  77 cap_num  (Input)
  78     The major capability number of the application to which
  79     the response is destined.
  80 mcb_ptr  (Input)
  81     A pointer to the mcb which is associated with the
  82     connection.  The mcb can be either the original mcb
  83     obtained by the application, or the address of a new mcb
  84     obtained by the application specifically for this
  85     connection.
  86 
  87 
  88 Returns:
  89 0        - no error
  90 Or an error code defined in the appendix.
  91 
  92 
  93 Examples:
  94 ecode = conresp (WSACCEPT, request_capability, mcb_ptr,
  95                  new_mcb_ptr, code);
  96 ecode = conresp (WSREJECT, request_capability, mcb_ptr,
  97                  NULL, code);
  98 
  99 
 100 :Entry:  cretinst:  11/28/86  cretinst
 101 
 102 
 103 Function:
 104 Registers the calling routine with MOWSE by assigning it a
 105 major capability number and adding it to MOWSE's capability
 106 table.  The calling routine must supply the name by which it
 107 is to be known to MOWSE, and the entry point describing where
 108 it is to be invoked by an execute capability.
 109 
 110 
 111 Syntax:
 112 int cretinst (cap_name, entry, inbuff_len, outbuff_len,
 113               data_ptr, mcb_ptr);
 114   char cap_name[WSCAPLEN];
 115   int (*entry)();
 116   int inbuff_len;
 117   int outbuff_len;
 118   char *data_ptr;
 119   mcb **mcb_ptr;
 120 
 121 
 122 Arguments:
 123 cap_name  (Input)
 124     A null terminated string of characters specifying the name
 125     by which the calling capability will be known to MOWSE.
 126 entry  (Input)
 127     A pointer to the function which will be invoked when MOWSE
 128     has a message destined for the application.
 129 inbuff_len  (Input)
 130     The length (in characters) of the message buffer which
 131     receives argument data from incoming messages.  The buffer
 132     will be allocated with the size specified or WSMINBUF,
 133     whichever is larger.
 134 
 135 
 136 outbuff_len  (Input)
 137     The length (in characters) of the message buffer which
 138     will be used for outgoing messages.  The buffer will be
 139     allocated with the size specified or WSMINBUF, whichever
 140     is larger.
 141 data_ptr  (Input)
 142     A pointer to the application's local data which is to be
 143     preserved across calls to the capability through MOWSE.
 144     This provides an alternate method to static variables of
 145     preserving data across the starts and stops of the
 146     application's life in MOWSE thus providing reentrancy.
 147 mcb_ptr  (Output)
 148     The address of the pointer to the application's MOWSE
 149     Control Block which will be used by MOWSE to maintain
 150     information on the application.
 151 
 152 
 153 Returns:
 154 0        - no error
 155 Or an error code defined in the appendix.
 156 
 157 
 158 Notes:
 159 All applications which expect to receive messages must have
 160 registered with MOWSE (through cretinst) in order to receive
 161 messages.  A message is provided to the application when the
 162 destination of the message specifies the major capability
 163 number of the application.  The application will then be
 164 invoked at the entry name provided with the message (argument
 165 data), its length, and a pointer to the applications
 166 data_block as follows:
 167 
 168 
 169   application_$entry_point (minor_cap, major_sender, arg_ptr,
 170           arg_length, data_block_ptr, mcb_ptr);
 171 
 172 
 173           char      minor_cap;
 174           int       major_sender;
 175           char      *arg_ptr;
 176           int       arg_length;
 177           char      *data_block_ptr
 178 
 179 
 180 The buffers inbuff and outbuff allow MOWSE to send and receive
 181 messages longer than one communications packet (defined by
 182 WSPAKSIZ) in a manner transparent to the capability.
 183 
 184 
 185 Examples:
 186 ecode = cretinst ("bft", bft_process, 256, 256, data_ptr,
 187                   &mcb_ptr);
 188 
 189 
 190 :Entry:  destinst:  11/28/86  destinst
 191 
 192 
 193 Function:
 194 Removes the reference to the application from MOWSE's
 195 capability table and deallocates the inbuff and outbuff
 196 message buffer space.
 197 
 198 
 199 Syntax:
 200 int destinst (mcb_ptr);
 201   mcb **mcb_ptr;
 202 
 203 
 204 Arguments:
 205 mcb_ptr  (Input)
 206     The address of the pointer to the application's MOWSE
 207     Control Block assigned by a call to "cretinst".
 208 
 209 
 210 Returns:
 211 0        - no error
 212 Or an error code defined in the appendix.
 213 
 214 
 215 Notes:
 216 If this is the final instance and it is being destroyed, then
 217 all memory occupied by the application is released including
 218 memory occupied by its code.
 219 
 220 
 221 Examples:
 222 ecode = destinst (&mcb_ptr);
 223 
 224 
 225 :Entry:  disrqst:  11/28/86  disrqst
 226 
 227 
 228 Function:
 229 Requests that conversation to the specified application be
 230 terminated by sending a "WSRQSTDS" to the specified
 231 capability.
 232 
 233 
 234 Syntax:
 235 int disrqst(cap_num,mcb_ptr);
 236     int cap_num;
 237     mcb *mcb_ptr;
 238 
 239 
 240 Arguments:
 241 cap_num  (Input)
 242     The major capability number of the application which is to
 243     be disconnected.
 244 mcb_ptr  (Input)
 245     The pointer to the application's MOWSE Control Block
 246     assigned by a call to cretinst.
 247 
 248 
 249 Returns:
 250 0        - no error
 251 Or an error code defined in the appendix.
 252 
 253 
 254 Examples:
 255 ecode = disrqst (bft_major_cap, mcb_ptr);
 256 
 257 
 258 :Entry:  disresp:  11/28/86  disresp
 259 
 260 
 261 Function:
 262 Notifies the application which requested a disconnect that the
 263 disconnect was accepted or rejected.  A "WSRESPDS" message
 264 will be sent to the application which made the disconnect
 265 request.
 266 
 267 
 268 Syntax:
 269 int disresp(status,cap_num,mcb_ptr);
 270     int status,
 271         cap_num;
 272     mcb *mcb_ptr;
 273 
 274 
 275 Arguments:
 276 status  (Input)
 277     The acceptance/rejectance of the disconnect request.
 278     Values WSACCEPT
 279             WSREJECT
 280 cap_num  (Input)
 281     The major capability number of the application to which
 282     the response is destined.
 283 mcb_ptr  (Input)
 284     The pointer to the application's MOWSE control block
 285     assigned by a call to cretinst.
 286 
 287 
 288 Returns:
 289 0        - no error
 290 Or an error code defined in the appendix.
 291 
 292 
 293 Examples:
 294 ecode = disresp (WSACCEPT, request_capability, mcb_ptr);
 295 ecode = disresp (WSREJECT, request_capability, mcb_ptr);
 296 
 297 
 298 :Entry:  execap:  11/28/86  execap
 299 
 300 
 301 Function:
 302 Executes the minor capability function of the specified major
 303 capability with the arguments provided.
 304 
 305 
 306 Syntax:
 307 int execap (major_num, minor_num, arg_ptr, arg_len, mcb_ptr);
 308   int major_num;
 309   int minor_num;
 310   char *arg_ptr;
 311   int arg_len;
 312   mcb *mcb_ptr;
 313 
 314 
 315 Arguments:
 316 major_num  (Input)
 317     The identifier of the capability to be executed.
 318 minor_num  (Input)
 319     The identifier of a specific function to be performed by
 320     the specified major_capability.
 321 arg_ptr  (Input)
 322     A pointer to the argument data to be supplied to the
 323     specified capability, NULL if there is no argument data.
 324 arg_len  (Input)
 325     The length of the argument data in bytes, zero if there is
 326     no data.
 327 mcb_ptr  (Input)
 328     The pointer to the application's MOWSE Control Block
 329     assigned by a call to "cretinst".
 330 
 331 
 332 Returns:
 333 0        - no error
 334 Or an error code defined in the appendix.
 335 
 336 
 337 Notes:
 338 It is up to the calling application to convert the argument
 339 data into character string format which can be interpreted by
 340 the application being called as a character string of data.
 341 
 342 If MOWSE was incapable of starting execution of the specified
 343 application, the calling application will be notified through
 344 the predefined minor capability WSFAILCP.
 345 
 346 
 347 Examples:
 348 ecode = execap (pcfooid, addnumid, numarg_ptr, numarg_len,
 349                 mcb_ptr);
 350 
 351 
 352 :Entry:  execom:  11/28/86  execom
 353 
 354 
 355 Function:
 356 Sends a command string to the command processor on the
 357 specified system.
 358 
 359 
 360 Syntax:
 361 int execom (command_string, system, command_id, mcb_ptr);
 362   char *command_string;
 363   int system;
 364   int *command_id;
 365   mcb *mcb_ptr
 366 
 367 
 368 Arguments:
 369 command_string  (Input)
 370     A null terminated string of characters that is typed
 371     on the system to execute the command.
 372 system  (Input)
 373     A constant specifying the system the command_string will be
 374     executed on.
 375     Values WSLOCAL
 376            WSREMOTE
 377 
 378 
 379 command_id  (Output)
 380     The tag which will be associated with the command_string
 381     being executed and the resultant WSCOMREP predefined minor
 382     capability.
 383 mcb_ptr  (Input)
 384     The pointer to the application's MOWSE Control Block
 385     assigned by a call to "cretinst".
 386 
 387 
 388 Returns:
 389 0        - no error
 390 Or an error code defined in the appendix.
 391 
 392 
 393 Notes:
 394 There are two ways in which information is returned to the
 395 calling application.  One is the immediate return which provides the
 396 error information as specified in code.  The second is through a
 397 delayed response message via the predefined minor capability WSCOMREP
 398 which provides the calling application with information at the
 399 completion of the command.  Two types of information are
 400 provided.  One is a success or failure of the command - this is
 401 important in the case of remote commands which caused the command
 402 processor on the remote system to fail.  The second is to provide the
 403 handler with the major capability number of the application which may
 404 have been loaded by the command.
 405 
 406 
 407 Since execute_command calls the system's command processor
 408 with the command_string, an application may be called which
 409 loads itself into the MOWSE.  Thus an application may use
 410 execute_command to load another application.
 411 
 412 
 413 Output from a command executing on the PC (by the PC's command
 414 processor) appears on the terminal screen with total
 415 disregard to MOWSE.  If a terminal emulator is executing and
 416 it calls a PC routine through EXECOM - such as "dir" - the
 417 output appears on the screen without passing through the
 418 terminal emulator.
 419 
 420 
 421 Examples:
 422 ecode = execom ("dir \user\smith\*.*", WSREMOTE, &com_id,
 423                 mcb_ptr);
 424 ecode = execom ("ls -d >udd>m>Smith",WSLOCAL, &com_id,
 425                 mcb_ptr);
 426 ecode = execom ("bft", WSREMOTE, &com_id, mcb_ptr);
 427 
 428 
 429 :Entry:  findname:  11/28/86  findname
 430 
 431 
 432 Function:
 433 Finds the name of a capability given its major capability
 434 number.
 435 
 436 
 437 Syntax:
 438 int findname (major_num, cap_name);
 439   int major_number;
 440   char cap_name[WSCAPLEN];
 441 
 442 
 443 Arguments:
 444 major_number  (Input)
 445     The major capability number of the capability name to be
 446     found.
 447 cap_name  (Output)
 448     The name of the capability found, 0 length if not found.
 449 
 450 
 451 Returns:
 452 0        - no error
 453 Or an error code defined in the appendix.
 454 
 455 
 456 Notes:
 457 
 458 
 459 Examples:
 460 ecode = findname (major_cap, cap_name);
 461 
 462 
 463 :Entry:  findnumb:  11/28/86  findnumb
 464 
 465 
 466 Function:
 467 Finds the major capability number of an application given a
 468 capability name.
 469 
 470 
 471 Syntax:
 472 int findnumb (cap_name, sys_id, major_num);
 473   char cap_name[WSCAPLEN];
 474   int sys_id;
 475   int *major_num;
 476 
 477 
 478 Arguments:
 479 cap_name  (Input)
 480     The capability name to be looked for.
 481 sys_id  (Input)
 482     The system which is to be looked at to find the capability
 483     name.
 484     Values  WSLOCAL
 485              WSREMOTE
 486 major_num  (input/output)
 487     Indicates where MOWSE is to begin searching of the
 488     capability table for the name specified, 0 will find the
 489     first case, and returns the major capability number of the
 490     found name.
 491 
 492 
 493 Returns:
 494 0        - no error
 495 Or an error code defined in the appendix.
 496 
 497 
 498 Notes:
 499 MOWSE looks for the capability name in its capability table in
 500 the following fashion:
 501 
 502 
 503     1) If the provided major capability number is 0, MOWSE
 504     will begin searching from the top of the table specified
 505     by the sys_id.
 506     2) If the major capability number is valid, MOWSE will
 507     begin searching from the next entry.
 508     3) If the provided sys_id is invalid, MOWSE will search
 509     the local CAT table from its first entry.
 510 
 511 
 512 Examples:
 513 ecode = findnumb ("bft_", WSLOCAL, &major_num);
 514 ecode = findnumb ("bft_", WSREMOTE, &major_num);
 515 
 516 
 517 :Entry:  getbgmes:  11/28/86  getbgmes
 518 
 519 
 520 Function:
 521 Returns one of two types of background messages - placed there
 522 by a call to "putbgmes".
 523 
 524 
 525     1) Info messages which are for display only.
 526     2) Query messages which are to be used to prompt the user
 527     to provide information which is to be returned to the
 528     requesting application through a call to "sendqrep".
 529 
 530 
 531 Syntax:
 532 int getbgmes (string, type, sender_major);
 533   char *string;
 534   int *type;
 535   int *sender_major;
 536 
 537 
 538 Arguments:
 539 string  (Output)
 540     The next background message available from MOWSE, placed
 541     there by a call to "putbgmes".  The string buffer into
 542     which the background message is placed must be at least
 543     one packetsize (WSPAKSIZ characters) long.
 544 type  (Output)
 545     A specifier to the type of background message returned.
 546     Values WSQUERY
 547             WSINFO
 548 sender_major  (Output)
 549     The major capability number of the application which
 550     stored the background message through a call to
 551     "putbgmes".
 552 
 553 
 554 Returns:
 555 0         - no error
 556 Or an error code defined in the appendix.
 557 
 558 
 559 Notes:
 560 The application which makes this call must be a foreground
 561 application which is responsible for all user I/O.
 562 
 563 
 564 If the message type returned is WSQUERY, the application which
 565 made this call must send a reply to the sender major as it is
 566 stopped, expecting a reply.
 567 
 568 
 569 Examples:
 570 ecode = getbgmes (string, &type, &sender_major);
 571 
 572 
 573 :Entry:  getstat:  11/28/86  getstat
 574 
 575 
 576 Function:
 577 Requests status information from the specified application.
 578 
 579 
 580 Syntax:
 581 int getstat (major_num, status_request, status_result);
 582   int major_num;
 583   char *status_request;
 584   char *status_result;
 585 
 586 
 587 Arguments:
 588 major_num  (Input)
 589     The major capability number of the application for which
 590     status information is requested.
 591 status_request  (Input)
 592     The argument data to be provided to the application to be
 593     called.
 594 status_result  (Output)
 595     The resultant character status information.
 596 
 597 
 598 Returns:
 599 0        - no error
 600 Or an error code defined in the appendix.
 601 
 602 
 603 Notes:
 604 This entry must only be called by a foreground application as
 605 it will wait within the call until a response is received.
 606 The requested application is notified of the request via the
 607 predefined minor capability WSSTATUS.
 608 
 609 
 610 Examples:
 611 ecode = getstat (bft_major_cap, "pending", status);
 612 
 613 
 614 :Entry:  gettdata:  11/28/86  gettdata
 615 
 616 
 617 Function:
 618 Retrieves a string from the terminal buffer and a flag which
 619 determines whether or not there are pending background messages
 620 (see PUTBGMES and GETBGMES).  The string is destined to be
 621 used as terminal data, ie.  it is expected to be displayed by
 622 the retrieving application on the PC's CRT.
 623 If there is no data in the terminal buffer, a zero length
 624 string will be returned.
 625 
 626 
 627 Syntax:
 628 int gettdata (getdata_ptr)
 629   struct get_struc {
 630      char *local_buffer_pointer;
 631      int local_buffer_size;
 632      int minor_capability;
 633      int background_pending_flag;
 634   } *getdata;
 635 
 636 
 637 Arguments:
 638 string_length  (Output)
 639     The length of the terminal string that it pointed to in
 640     the structure below.  0 if the terminal buffer is empty.
 641 getdata_ptr  (Input)
 642     The pointer to the calling routine's structure which is
 643     used for input and output arguments.
 644 local_buffer_ptr  (Input)
 645     A pointer to a buffer into which the retrieved terminal
 646     data will be placed.
 647 
 648 
 649 local_buffer_size  (Input)
 650     The size of the local buffer.  Determines the maximum
 651     number of characters that can be retrieved.
 652 minor_capability  (Output)
 653     The entry point specified by the remote system for
 654     specialized handling of received terminal data.
 655 background_pending_flag  (Output)
 656     Determines if there are background messages pending.  0 if
 657     none are pending, N for the number of messages pending.
 658 
 659 
 660 Returns:
 661 N - length of terminal data retrieved, 0 if none.
 662 
 663 
 664 Notes:
 665 
 666 
 667 :Entry:  putbgmes:  11/28/86  putbgmes
 668 
 669 
 670 Function:
 671 Provides a background application with the means of displaying
 672 one of two types of special messages to the foreground channel
 673 through a foreground application such as the terminal
 674 emulator.
 675 
 676 
 677     1) Information messages which inform the user such as
 678     errors and status.
 679     2) Query messages which ask the user for input, which is
 680     relayed back to the requesting application through the
 681     predefined minor capability WSQRYREP.
 682 
 683 
 684 Syntax:
 685 int putbgmes (mcb_ptr, code, caller, control, arg1,...,argN);
 686   mcb *mcb_ptr;
 687   int code;
 688   char *caller;
 689   char *control;
 690 
 691 
 692 Arguments:
 693 mcb_ptr  (Input)
 694     The pointer to the application's MOWSE Control Block
 695     assigned by a call to "cretinst".
 696 code  (Input)
 697     Determines the type of the message to be displayed.
 698     If code is 0, the message will consist only of the
 699     contents of the control string.
 700     If code is WSQUERY, the control string will be used to
 701     prompt the user for a response.
 702 
 703 
 704 caller  (Input)
 705     The name of the routine making the call to "putbgmes".
 706 control  (Input)
 707     A "printf" control string.
 708 argI  (Input)
 709     printf control arguments to be substituted into the
 710     control argument.  These arguments are optional.  They can
 711     only be used however, if the control argument is given
 712     first.
 713 
 714 
 715 Returns:
 716 0        - always
 717 
 718 
 719 Notes:
 720 All messages are placed into MOWSE for future retrieval
 721 through a call to "getbgmes".  If there is no foreground
 722 application executing to retrieve these messages, they will go
 723 unnoticed.  This is especially important in the case of query
 724 messages as no response will be returned until the message has
 725 been retrieved and processed by the foreground application.
 726 
 727 
 728 If the code is specified as WSQUERY, the user's response will
 729 be provided to the calling application through the predefined
 730 minor capability WSQRYREP.
 731 
 732 
 733 Examples:
 734 putbgmes (mcb_ptr, ecode, "bft", "retrieve error %d",
 735           BFTINVDIR);
 736 putbgmes (mcb_ptr, 0, "bft", "transfer of file %s complete",
 737           trans.name);
 738 putbgmes (mcb_ptr, WSQUERY, "bft",
 739           "File %s exists overwrite?", trans.name);
 740 
 741 
 742 :Entry:  putstat:  11/28/86  putstat
 743 
 744 
 745 Function:
 746 Sends a status string to the foreground application which made
 747 a request for status information.
 748 
 749 
 750 Syntax:
 751 int putstat (status, mcb_ptr);
 752   char *status;
 753   mcb *mcb_ptr;
 754 
 755 
 756 Arguments:
 757 status  (Input)
 758     A null terminated character string which comprises the
 759     status information up to a length WSPAKSIZ.
 760 mcb_ptr  (Input)
 761     The pointer to the application's MOWSE Control Block
 762     assigned by a call to "cretinst".
 763 
 764 
 765 Returns:
 766 0        - no error
 767 Or an error code defined in the appendix.
 768 
 769 
 770 Notes:
 771 The calling application must have been invoked with the
 772 predefined minor capability WSSTATUS, as it is only then that
 773 the requesting application is awaiting status information.
 774 
 775 
 776 Examples:
 777 ecode = putstat ("status no pending requests", mcb_ptr);
 778 
 779 
 780 :Entry:  puttdata:  11/28/86  puttdata
 781 
 782 
 783 Function:
 784 Sends a data string to the Multics user i/o switch.
 785 
 786 
 787 Syntax:
 788 puttdata(minor_cap, string_ptr, string_len);
 789   int minor_cap;
 790   char *string_ptr;
 791   int string_len;
 792 
 793 
 794 Arguments:
 795 minor_cap  (Input)
 796     The destination minor capability number to receive the
 797     data.  This is to distinguish between control information
 798     and regular terminal data.  The minor capability number
 799     for regular terminal data is WSFGDATA.
 800 string_ptr  (Input)
 801     A pointer to the character string to be sent.
 802 string_len  (Input)
 803     The length of above character string.
 804 
 805 
 806 Returns:
 807 0        - no error.
 808 
 809 
 810 Notes:
 811 
 812 
 813 :Entry:  resetcap:  11/28/86  resetcap
 814 
 815 
 816 Function:
 817 Tells MOWSE to reset the specified application.  The
 818 application to be reset is notified via the predefined minor
 819 capability RESET.
 820 
 821 
 822 Syntax:
 823 int resetcap (major_number, mcb_ptr);
 824   int major_number;
 825   mcb *mcb_ptr;
 826 
 827 
 828 Arguments:
 829 major_number  (Input)
 830     The major capability number of the application to be
 831     reset.
 832 mcb_ptr  (Input)
 833     The pointer to the caller's MOWSE Control Block.
 834 
 835 
 836 Returns:
 837 0        - no error
 838 Or an error code defined in the appendix.
 839 
 840 
 841 Notes:
 842 MOWSE notifies the application through the predefined minor
 843 capability WSRSTAPP and clears all of the flags associated
 844 with the application.  All messages occurring between the
 845 request and the completion of the request will be discarded by
 846 MOWSE.
 847 
 848 
 849 Examples:
 850 ecode = resetcap (bft_major_cap, mcb_ptr);
 851 
 852 
 853 :Entry:  resume:  11/28/86  resume
 854 
 855 
 856 Function:
 857 Tells MOWSE to resume the specified application.  The
 858 application to be resumed is notified via the predefined minor
 859 capability RESM.
 860 
 861 
 862 Syntax:
 863 int resume (major_number, mcb_ptr);
 864   int major_number;
 865   mcb *mcb_ptr;
 866 
 867 
 868 Arguments:
 869 major_number  (Input)
 870     The major capability number of the application to be
 871     resumed.
 872 mcb_ptr  (Input)
 873     The pointer to the caller's The MOWSE Control Block.
 874 
 875 
 876 Returns:
 877 0        - no error
 878 Or an error code defined in the appendix.
 879 
 880 
 881 Notes:
 882 If the specified capability is not in suspension, the request
 883 will be ignored.  The capability to be resumed is informed via
 884 the predefined minor WSRSMAPP.
 885 
 886 
 887 Examples:
 888 ecode = resume (bft_major_cap, mcb_ptr);
 889 
 890 
 891 :Entry:  sendqrep:  11/28/86  sendqrep
 892 
 893 
 894 Function:
 895 Sends the user's response to a query message to the originator
 896 of the background query message (see "getbgmes").
 897 
 898 
 899 Syntax:
 900 int sendqrep (reply_string, destination_major);
 901   char *reply_string;
 902   int destination_major;
 903 
 904 
 905 Arguments:
 906 reply_string  (Input)
 907     The user's response to the query message obtained through
 908     a call to "getbgmes".
 909 destination_major  (Input)
 910     The major capability number of the application which is to
 911     receive this response string (see "getbgmes").
 912 
 913 
 914 Returns:
 915 0        - no error
 916 Or an error code defined in the appendix.
 917 
 918 
 919 Notes:
 920 A call to this procedure must be performed whenever a WSQUERY
 921 type is returned from "getbgmes" as the requesting application
 922 is waiting for the response.
 923 
 924 
 925 Examples:
 926 ecode = sendqrep (user_response, sender_major);
 927 
 928 
 929 :Entry:  wssleep:  11/28/86  wssleep
 930 
 931 
 932 Function:
 933 Forces the calling application to sleep (suspend execution)
 934 for the specified number of seconds.  When an application is
 935 put to sleep, it cannot accept any messages except TERM and
 936 RESET.  The calling application will be notified through the
 937 predefined minor capability WSWAKEUP when the specified time
 938 has elapsed.
 939 
 940 
 941 Syntax:
 942 int wssleep (time, mcb_ptr);
 943   int time;
 944   mcb *mcb_ptr;
 945 
 946 
 947 Arguments:
 948 time  (Input)
 949     The number of seconds the application is to sleep.
 950 mcb_ptr  (Input)
 951     The pointer to the application's MOWSE control block
 952     assigned by a call to "cretinst".
 953 
 954 
 955 Returns:
 956 0        - no error
 957 Or an error code defined in the appendix.
 958 
 959 
 960 Notes:
 961 The application is notified to awaken via the predefined minor
 962 capability WSWAKEUP.
 963 It is important that MOWSE applications use THIS sleep
 964 function, as opposed to the sleep routine provided by the
 965 standard "C" library.  MOWSE cannot perform anything until
 966 the application has returned to it, thus all further message
 967 processing would be suspended until the call to the "C" sleep
 968 has expired.
 969 
 970 
 971 Examples:
 972 wssleep (10);
 973 
 974 
 975 :Entry:  stayres: 11/28/86  stayres
 976 
 977 
 978 Function:
 979 Terminates execution of a MOWSE capability at the end of its
 980 initialization, and keeps its object code resident in the PC's
 981 memory for later invocations through "execap" calls.
 982 
 983 
 984 Syntax:
 985 stayres (mcb_ptr);
 986   mcb *mcb_ptr;
 987 
 988 
 989 Arguments:
 990 mcb_ptr  (Input)
 991     The pointer to the application's MOWSE Control Block
 992     assigned by a call to "cretinst".
 993 
 994 
 995 Returns:
 996 A call to "stayres" will not return.
 997 
 998 
 999 :Entry:  suspend:  11/28/86  suspend
1000 
1001 
1002 Function:
1003 Tells MOWSE to suspend the specified application.  The
1004 application to be suspended is notified via the predefined
1005 minor capability WSSUSAPP.  A suspended application is unable
1006 to send or receive messages.
1007 
1008 
1009 Syntax:
1010 int suspend (major_number, mcb_ptr);
1011   int major_number;
1012   mcb *mcb_ptr;
1013 
1014 
1015 Arguments:
1016 major_number  (Input)
1017     Capability number of the application to be suspended.
1018 mcb_ptr  (Input)
1019     The pointer to the caller's MOWSE Control Block.
1020 
1021 
1022 Returns:
1023 0        - no error
1024 Or an error code defined in the appendix.
1025 
1026 
1027 Notes:
1028 The specified application will be suspended - unable to send
1029 or receive messages - by MOWSE until a call to "resume" has
1030 been called for that application.
1031 
1032 
1033 Examples:
1034 ecode = suspend (bft_major_cap, mcb_ptr);
1035 
1036 
1037 :Entry:  termcap:  11/28/86  termcap
1038 
1039 
1040 Function:
1041 Tells MOWSE to terminate the specified application.  The
1042 application to be terminated is notified via the predefined
1043 minor capability WSTRMAPP.
1044 
1045 
1046 Syntax:
1047 int termcap (major_number, mcb_ptr);
1048   int major_number;
1049   mcb *mcb_ptr;
1050 
1051 
1052 Arguments:
1053 major_number  (Input)
1054     The major capability number of the application to be
1055     terminated.
1056 mcb_ptr  (Input)
1057     The MOWSE Control Block of the calling capability.
1058 
1059 
1060 Returns:
1061 0        - no error
1062 Or an error code defined in the appendix.
1063 
1064 
1065 Notes:
1066 
1067 
1068 Examples:
1069 ecode = termcap (bft_major_cap, mcb_ptr);