home *** CD-ROM | disk | FTP | other *** search
/ Inside Multimedia 1995 October / IMM1095.ISO / share / os2 / watchcat / watchcat.inf (.txt) < prev    next >
OS/2 Help File  |  1994-12-18  |  188KB  |  1,938 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Title Page ΓòÉΓòÉΓòÉ
  3.  
  4.                              Welcome to WatchCat 2.0
  5.                          - The Guardian Angel of OS/2 -
  6.  
  7.  
  8. ΓòÉΓòÉΓòÉ 2. Overview ΓòÉΓòÉΓòÉ
  9.  
  10. WatchCat is a program to recover OS/2 2.x and OS/2 3.x from some kinds of hang 
  11. by killing applications. It works as follows: 
  12.  
  13.  WatchCat may be useful to any OS/2 user in the following situations: 
  14.  
  15. o The Presentation Manager (PM) is blocked. Due to the  single message queue of 
  16.   OS/2 a single ill-behaved PM program might block all PM programs in the 
  17.   system and prevent any program from getting user input. Therefore it is 
  18.   impossible to end the corrupt task or to save data in other programs. You can 
  19.   press Ctrl-ESC but this does not help in all situations. Due to the 
  20.   Full-Screen nature of WatchCat those ill-behaved programs can be killed from 
  21.   within WatchCat. 
  22.  
  23.   There are several reasons why the PM might hang: 
  24.  
  25.    - An ill-behaved PM program 
  26.  
  27.    - An ill-behaved Windows program in a Win-OS/2 session 
  28.  
  29.    - Erroneous Workplace Shell objects. 
  30.  
  31.   Even though OS/2 has become much more stable with Version 3, there are still 
  32.   situations where the PM is blocked: 
  33.  
  34. o The PM user-interface is blocked because of a system-modal dialog box that 
  35.   cannot be closed. 
  36.  
  37. o User input is impossible because of a high priority process or a process that 
  38.   is doing a lot of swapping. 
  39.  
  40. WatchCat might also be interesting to programmers in the following situations: 
  41.  
  42. o Display all PStat-info about modules, processes, threads, etc. WatchCat 
  43.   periodically updates all this information. It is quick and easy to use 
  44.   without any PM overhead. 
  45.  
  46. o You may use it in special cases for debugging: Send your debugging text to 
  47.   WatchCat to avoid any additional PM message passing. This may be useful in 
  48.   some PM and WPS applications. 
  49.  
  50. o WatchCat can be extended with its own modules via a DLL and a documented API. 
  51.  
  52. In contrast to WatchCat 1.x  you don't need special hardware to use WatchCat 
  53. 2.0 You can still use any switches you built for v1.x, but you can also simply 
  54. activate WatchCat by a user-defined hotkey (default: Ctrl-Alt-W). 
  55.  
  56. WatchCat needs a very small amount of CPU-time. You don't see it and you won't 
  57. notice it. But it is there if you need it. 
  58.  
  59.  
  60. ΓòÉΓòÉΓòÉ 3. Copyright & more ΓòÉΓòÉΓòÉ
  61.  
  62. Copyright & more 
  63.  
  64. Please read this section carefully before using or distributing WatchCat. 
  65.  
  66.  
  67. ΓòÉΓòÉΓòÉ 3.1. Copyright ΓòÉΓòÉΓòÉ
  68.  
  69. WatchCat and all software supplied in the WatchCat package is 
  70. (c) Copyright 1993, 1994 by Felix von Normann and Thomas Opheys. 
  71.  
  72. All rights reserved. 
  73.  
  74. You are invited to distribute WatchCat in the sense of Freeware/Shareware. This 
  75. implies that you can sell only the copying service. You cannot sell the program 
  76. itself without explicit permission. Repackaging the WatchCat archive is not 
  77. allowed. 
  78.  
  79. WatchCat is free for all kinds of personal usage. Please contact the authors 
  80. for information about (direct and indirect) commercial usage (this includes 
  81. using WatchCat at work). 
  82.  
  83. Demo versions, evaluation copies or limited Shareware versions do not exist. 
  84.  
  85.  
  86. ΓòÉΓòÉΓòÉ 3.2. Disclaimer ΓòÉΓòÉΓòÉ
  87.  
  88. We do not claim to provide error-free software or software that will meet all 
  89. your requirements. 
  90.  
  91. This software is supplied with no warranty, neither expressed nor implied. We 
  92. disclaim all warranties for any damages included but not limited to incidental 
  93. or consequential damage caused directly or indirectly by this software. 
  94.  
  95. All software is provided AS IS. You may use this program only at your own risk. 
  96.  
  97. WatchCat must not be used in states that do not allow the above limitation of 
  98. liability. 
  99.  
  100.  
  101. ΓòÉΓòÉΓòÉ 3.3. The authors ΓòÉΓòÉΓòÉ
  102.  
  103. WatchCat was written by: 
  104.  
  105. For more information refer to section How to contact the authors. 
  106.  
  107.  
  108. ΓòÉΓòÉΓòÉ 3.4. Credits ΓòÉΓòÉΓòÉ
  109.  
  110. Credits go to Will Rose (cwr@crash.cts.com) who was so kind as to read our docs 
  111. and correct grammar, style, syntax, typos and all the other things where a 
  112. German can do harm to the English language. 
  113.  
  114. Thanks to Jeremy Mathers (pynq@quads.uchicago.edu), Benjamin Stein 
  115. (benno@liva.in-berlin.de), Mike Morrell (morrellm@seq.oit.osshe.edu), Nicole 
  116. Greiber (greiber@wrcs2.urz.uni-wuppertal.de), Erich Schulman 
  117. (acme@use.usit.net), Andrew DeNardo 
  118. (LRSSPFLD!CHAMPAIGN!DENARDO@lrsmail.attmail.com), Sven Kiesow 
  119. (kiesow@kirk.fmi.uni-passau.de) and many others for their contributions to 
  120. WatchCat. 
  121.  
  122. THANKS A LOT! 
  123.  
  124.  
  125. ΓòÉΓòÉΓòÉ 3.5. Payment for WatchCat? ΓòÉΓòÉΓòÉ
  126.  
  127. Is there a need to pay for WatchCat? 
  128.  
  129. This program can be used absolutely free, if: 
  130.  
  131.      o You already sent us mail, a letter or a postcard for WatchCat 1.x. 
  132.  
  133.      o You helped us to improve WatchCat. 
  134.  
  135.      o You need WatchCat for your personal use only. 
  136.  
  137.      o You're a member of Team OS/2 and recommend OS/2 and WatchCat to a lot of 
  138.        people. 
  139.  
  140.  Please contact us for detailed information, if one of the following conditions 
  141.  hold: 
  142.  
  143.       1. You are using WatchCat in your office. 
  144.  
  145.       2. You are a professional programmer 
  146.  
  147.       3. You are millionaire 
  148.  
  149.  All others are invited to send us email or a postcard. All kinds of comments 
  150.  are very welcome. We are looking forward to your comment. 
  151.  
  152.   Thanks in advance
  153.   Felix & Thomas
  154.  
  155.  
  156. ΓòÉΓòÉΓòÉ 4. How to contact the authors ΓòÉΓòÉΓòÉ
  157.  
  158. How to contact the authors 
  159.  
  160. There are several ways to contact us. 
  161.  
  162.  o By regular mail: To receive further information or to write us a postcard or 
  163.    letter write to one (or both) of the following addresses: 
  164.  
  165.       Felix von Normann    Thomas Opheys
  166.       Innstr. 82        Franz-Stockbauer-Weg 1 / 88
  167.       94036 Passau       94032 Passau
  168.       Germany         Germany
  169.  
  170.  o Send an email to: 
  171.  
  172.       watchcat@uni-duisburg.de (for all comments about WatchCat)
  173.       normann@kirk.fmi.uni-passau.de (to write a mail to Felix)
  174.       opheys@kirk.fmi.uni-passau.de (to write a mail to Thomas)
  175.  
  176.  o World Wide Web:  We are currently working on a WWW homepage for WatchCat. 
  177.    You need a WWW-Browser (if you use OS/2, please note that this program is 
  178.    not part of the OS/2 Warp Bonus Pack, but available freely to all OS/2 
  179.    users). Select URL http://www.uni-passau.de/~normann/watchcat.html 
  180.    Currently we have links to: 
  181.  
  182.     - The online documentation in HTML format (for WWW). 
  183.  
  184.     - The online documentation for TeX. 
  185.  
  186.     - A link to Hobbes (where you can get the latest WatchCat package). 
  187.  
  188.     - Some pages with the latest information about WatchCat. Frequently asked 
  189.       questions that are not part of this documentation will be collected 
  190.       there. 
  191.  
  192.  
  193. ΓòÉΓòÉΓòÉ 5. WatchCat for the impatient user ΓòÉΓòÉΓòÉ
  194.  
  195. WatchCat for the impatient user 
  196.  
  197. After uninstalling previous versions of WatchCat, copy all files into a single, 
  198. separate directory (e.g. ramdisk, or final WatchCat directory). 
  199.  
  200. Now run the install program (install.exe) and follow the instructions, 
  201. especially select: 
  202.  
  203.  o Easy installation: This options installs WatchCat in your CONFIG.SYS and 
  204.    creates a WPS object on your Workplace Shell. The only way to activate 
  205.    WatchCat is the keyboard. 
  206.  
  207.  o Advanced installation: Select this option if you want to use a switch for 
  208.    LPT, COM, etc, or you need to have more than one device. Use this option 
  209.    also if you do not want to install the WPS object. 
  210.  
  211.  Now installation is ready. The CONFIG.SYS is updated. Reboot. Activate 
  212.  WatchCat (default: Ctrl-Alt-W). Enjoy! 
  213.  
  214.  
  215. ΓòÉΓòÉΓòÉ 6. Installation and configuration of WatchCat ΓòÉΓòÉΓòÉ
  216.  
  217. Installation and Configuration 
  218.  
  219. (If you don't won't to read much text refer to WatchCat for the impatient 
  220. user.). 
  221.  
  222. Before installing WatchCat 2.0 you must deinstall WatchCat 1.x (if present). 
  223.  
  224. We recommend using the installation program to copy the files and update the 
  225. CONFIG.SYS. 
  226.  
  227. Of course, you can also install WatchCat manually. This requires you to include 
  228. a device driver and a RUN= statement in the CONFIG.SYS file. 
  229.  
  230. To get information about which files are needed/not needed, please refer to the 
  231. section Understanding the files in the WatchCat package.). 
  232.  
  233.  
  234. ΓòÉΓòÉΓòÉ 6.1. Installation procedure ΓòÉΓòÉΓòÉ
  235.  
  236. Topics:
  237.  
  238. Deinstalling WatchCat 1.x
  239. The install program
  240. Installing The WPS object
  241. Installing WatchCat manually
  242. Uninstalling WatchCat 2.0
  243.  
  244.  
  245. ΓòÉΓòÉΓòÉ 6.1.1. Deinstalling WatchCat 1.x ΓòÉΓòÉΓòÉ
  246.  
  247.           Note: YOU MUST DELETE AND DEREGISTER THE WATCHCAT 1.0 OBJECT FROM THE 
  248.           WORKPLACE SHELL. DO NOT FORGET THIS STEP!!!! 
  249.  
  250.  If you installed the WPS object of WatchCat 1.x (the stupid cat on your 
  251.  Workplace Shell) please remove it BEFORE installing the new version. First 
  252.  delete the icon by using its context menu or dropping it on the shredder. 
  253.  DON'T FORGET THIS STEP! 
  254.  
  255.  Then you can deregister the WPS class. Either run the old OLD WatchCat 1.x, 
  256.  once with once with parameter deregisterWPS and once with the parameter 
  257.  clearini: 
  258.  
  259.   [C:\watchcat] watchcat deregisterWPS
  260.    ...
  261.   [C:\watchcat] watchcat clearini
  262.    ...
  263.  
  264.  If you already deleted WatchCat 1.x you can use the install program of 
  265.  WatchCat 2.0 to deregister it. Just type: 
  266.  
  267.   [C:\watchcat] install deregisterWPS
  268.  
  269.  Now you are ready to install WatchCat 2.0. 
  270.  
  271.  
  272. ΓòÉΓòÉΓòÉ 6.1.2. Using the install program ΓòÉΓòÉΓòÉ
  273.  
  274. It is very important to uninstall WatchCat 1.x first. 
  275.  
  276. It is assumed that you unpacked all files in a certain directory. You can put 
  277. all the files into the final WatchCat directory or tell the installation 
  278. program to do so. 
  279.  
  280. Then start install from the command line. 
  281.  
  282. You first have to choose between the easy installation and the advanced 
  283. installation. The easy installation procedure will install WatchCat in your 
  284. CONFIG.SYS, with as many features enabled as possible and default settings. The 
  285. default to activate WatchCat is to use Ctrl-Alt-W. 
  286.  
  287. If you want to activate WatchCat with any other input control you must choose 
  288. the advanced installation. Please answer all questions, then in the end the 
  289. install program will add WatchCat to the CONFIG.SYS. 
  290.  
  291.  
  292. ΓòÉΓòÉΓòÉ 6.1.3. Installing the WPS object ΓòÉΓòÉΓòÉ
  293.  
  294. A separate installation step for the Workplace Shell object is not required any 
  295. longer. That is all managed by the install program. 
  296.  
  297.  
  298. ΓòÉΓòÉΓòÉ 6.1.4. Installing WatchCat manually ΓòÉΓòÉΓòÉ
  299.  
  300. WatchCat has the following architecture: 
  301.  
  302.  
  303.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  304.   Γöé   WatchCat    Γöé
  305.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  306.           
  307.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  308.   Γöé physical      Γöé
  309.   Γöé device driver Γöé
  310.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  311.           
  312.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  313.   Γöé   Hardware    Γöé
  314.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  315.  
  316. Therefore you must add the statements below to your CONFIG.SYS. Substitute 
  317. x:\path\ with the correct path and do not copy the italic text. (You can place 
  318. these lines somewhere in your CONFIG.SYS). 
  319. DEVICE=x:\path\watchcat.sys      ┬á insert at the top of CONFIG.SYS to install 
  320. the device driver 
  321. RUN=x:\path\watchcat.exe       ┬á to detach the main program 
  322.  
  323. In addition you need to update some variables: (WatchCat will probably not work 
  324. if you do not set these variables correctly). 
  325. PATH=...;x:\path\;           ┬á let OS/2 find watchcat.exe 
  326. LIBPATH=...;x:\path\;         ┬á let OS/2 find the DLL. 
  327. BOOKSHELF=...;x:\path\;        ┬á let OS/2 find this documentation 
  328.  
  329. If you do not want to activate WatchCat with the default hotkey Ctrl-Alt-W, it 
  330. is necessary to add a parameter to the device driver. The parameters are listed 
  331. in the next session. 
  332.  
  333.  
  334. ΓòÉΓòÉΓòÉ 6.1.5. Uninstalling WatchCat 2.0 ΓòÉΓòÉΓòÉ
  335.  
  336. Currently we don't have a deinstall program. You must deinstall WatchCat 
  337. manually. To do so please follow these steps. 
  338.  
  339.   1. kill WatchCat (This can be done by WatchCat) 
  340.  
  341.   2. delete the WPS object (if there) 
  342.  
  343.   3. run install deregisterWPS from the commandline 
  344.  
  345.   4. remove WatchCat specific entries from your CONFIG.SYS ( RUN=..., 
  346.      DEVICE=..., LIBPATH, PATH, BOOKSHELF ) 
  347.  
  348.   5. reboot (!!!) 
  349.  
  350.   6. delete all files 
  351.  
  352.  
  353. ΓòÉΓòÉΓòÉ 6.2. Understanding the files in the WatchCat package ΓòÉΓòÉΓòÉ
  354.  
  355. The WatchCat package contains the following files: 
  356.  
  357. File       task                       deleteable?
  358.  
  359. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  360.  
  361. readme.txt    small overview                  yes, after reading
  362. install.exe   install and deinstall WatchCat          yes, after install
  363.                                  save to diskette
  364. watchcat.sys   device driver                   no
  365. WatchCat.exe   The program. Executable on OS/2 2.11 and Warp   \ delete
  366. WarpCat.exe   The program. Executable on Warp only.       / one
  367.         It is recommended to use this file if you have
  368.         installed Warp. Copying and renaming is managed
  369.         by the install program
  370. wpcat.dll    Workplace Shell object              if you have no WPS object
  371. watchcat.inf   This documentation                if you don't need doc
  372. wcatwin.dll   Window calls, FeelX calls.            if you don't need
  373.                                  a) window titles
  374.                                  b) FeelX alt. marking
  375. wcatdeb.dl_   rename to wcatdeb.dll to use API         if you're not a programmer
  376. wcat_api.zip   unpack to program WatchCat            if you're not a programmer
  377.  
  378.  
  379. ΓòÉΓòÉΓòÉ 6.3. Parameters supported by the device driver ΓòÉΓòÉΓòÉ
  380.  
  381. Topics:
  382. General syntax
  383. <device>
  384. <mask>
  385. <hardware>
  386. summary
  387. Converting WCat 1.x options
  388.  
  389.  
  390. ΓòÉΓòÉΓòÉ <hidden> General syntax ΓòÉΓòÉΓòÉ
  391.  
  392.   DEVICE = ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ WATCHCAT.SYS ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇ
  393.             ΓööΓöÇ <path> ΓöÇΓöÿ                  Γöé  Γö£ΓöÇ <option> ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γöé
  394.                                            Γöé  ΓööΓöÇ <activation> ΓöÇΓöÿ  Γöé
  395.                                            ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  396.  
  397.   <option> : ΓöÇΓöÇΓö¼ΓöÇ /Q ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  398.                Γö£ΓöÇ /nomouse ΓöÇΓöñ
  399.                Γö£ΓöÇ /nopm ΓöÇΓöÇΓöÇΓöÇΓöñ
  400.                Γö£ΓöÇ /mono ΓöÇΓöÇΓöÇΓöÇΓöñ
  401.                Γö£ΓöÇ /nofade ΓöÇΓöÇΓöñ
  402.                ΓööΓöÇ /nodll ΓöÇΓöÇΓöÇΓöÿ
  403.  
  404.  
  405.   <activation> :  ΓöÇΓöÇΓöÇΓöÇ <device> ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  406.                                    ΓööΓöÇ : ΓöÇΓöÇ <mask> ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  407.                                                       ΓööΓöÇ <hardware> ΓöÇΓöÿ
  408. The actual values are described in the following sections. 
  409.  
  410.  
  411. ΓòÉΓòÉΓòÉ 6.3.1. <device> ΓòÉΓòÉΓòÉ
  412.  
  413. This part is to specify what kind of device you're using. 
  414.  
  415.      name  description       activation mechanism(s)   default bit mask           default hardware
  416.      ΓöÇΓöÇΓöÇΓöÇ  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  417.      KEYB  keyboard          (key/key combination)     Ctrl-Alt-W                 KEYB (Keyboard)
  418.      GAME  game port         (joystick or switch)      any joystick button        GAME (Game Port)
  419.      COM1  serial port 1     (switch)                  DCD,RI,DSR or CTS line     COM (serial)
  420.      COM2  serial port 2     (switch)                  as above                   as above
  421.      COM3  serial port 3     (switch)                  as above                   as above
  422.      COM4  serial port 4     (switch)                  as above                   as above
  423.      LPT1  parallel port 1   (switch)                  BUSY,ACK,PEND,SEL,ERROR    LPT (parallel)
  424.      LPT2  parallel port 2   (switch)                  as above                   as above
  425.      XXXX  user device       (any input)               any bit of the port        USER (user device)
  426.  
  427.  
  428. ΓòÉΓòÉΓòÉ 6.3.2. <mask> ΓòÉΓòÉΓòÉ
  429.  
  430. Defines which input lines/port bits of the given device may be used to accept a 
  431. WatchCat activation. Note that the mask byte must be hexadecimal, and exactly 
  432. two characters long. Example: "F0" (upper four bits will be used). 
  433. For certain devices, there are aliases for common bit masks: 
  434.  
  435.      dev:mask    description
  436.      ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  437.      GAME:JA     Joystick A, any button (J1 also works)
  438.      GAME:JB     Joystick B, any button (J2 also works)
  439.      GAME:JA1    Joystick A, button 1
  440.      GAME:JA2    Joystick A, button 2
  441.      GAME:JB1    Joystick B, button 1
  442.      GAME:JB2    Joystick B, button 2
  443.      COMx:DCD    COMx, Data Carrier Detect line
  444.      COMx:RI     COMx, Ring Indicator line
  445.      COMx:DSR    COMx, Data Set Ready line
  446.      COMx:CTS    COMx, Clear To Send line
  447.      LPTx:BUSY   LPTx, BUSY line (BSY also works)
  448.      LPTx:ACK    LPTx, ACK (Acknowledge) line
  449.      LPTx:PEND   LPTx, Paper End line
  450.      LPTx:SEL    LPTx, Selected line
  451.      LPTx:ERR    LPTx, Error line (ERROR also works)
  452.      xxxx:ALL    all bits of the device
  453.  For the KEYB device, a bit mask isn't useful. You can specify a make-code of a 
  454. key instead; but normally, you use one of the following key aliases: F10, F11, 
  455. F12, A, B, C, ..., X, Y, Z 
  456. In addition, you can use CTRL, ALT or SHIFT or any combination of two of these 
  457. three keys with the activation key: 
  458.  
  459.      S-<key>   SHIFT+<key>
  460.      C-<key>   CTRL+<key>
  461.      A-<key>   ALT+<key>
  462.      CA-<key>  CTRL+ALT+<key>
  463.      CS-<key>  CTRL+SHIFT+<key>
  464.      AC-<key>  ALT+CTRL+<key>
  465.      AS-<key>  ALT+SHIFT+<key>
  466.      SC-<key>  SHIFT+CTRL+<key>
  467.      SA-<key>  SHIFT+ALT+<key>
  468.  
  469.           Examples: 
  470.  
  471.                     parameter   to activate WatchCat, press
  472.                     ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  473.                     KEYB:F12    CTRL+ALT+W
  474.                     KEYB:S-F11   SHIFT+F11
  475.                     KEYB:CA-C   CTRL+ALT+C
  476.  
  477.           You should not use F10 or the A...Z keys without at least CTRL and/or 
  478.           ALT because some programs might need these keys. 
  479.  
  480.           Note: Depending on your keyboard hardware it might not be possible to 
  481.           press several keys simultaneously. 
  482.  
  483.  
  484. ΓòÉΓòÉΓòÉ 6.3.3. <hardware> ΓòÉΓòÉΓòÉ
  485.  
  486. Define which hardware type the device is. The following names for hardware 
  487. types are available: 
  488.  
  489.      name  hardware type
  490.      ΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  491.      KEYB  Keyboard
  492.      GAME  Game Port
  493.      COM   serial COM Port
  494.      LPT   parallel LPT Port
  495.      USER  user device
  496.  
  497. For all standard device names like LPT1, KEYB, COM2, GAME, ... <hardware> is 
  498. determined automatically. Only when <hardware> is a port address, do you have 
  499. to tell the device driver what kind of hardware is to be expected at this port 
  500. address. 
  501.  
  502.           KEYB - Keyboard 
  503.           The keyboard can be used to activate WatchCat. Btw. this also works 
  504.           when the keyboard seems to be "dead" or if a PM session doesn't 
  505.           respond to the keyboard. Currently, you can use F10, F11, F12 or A..Z 
  506.           keys together with any combination of one or two shift keys 
  507.           (CTRL,ALT,SHIFT). 
  508.           The defaults for KEYB are: 0060:CA-W:KEYB, that is: The keyboard read 
  509.           data port address hex 60 is used. CTRL+ALT+W is the default key to 
  510.           activate WatchCat. Internally, the port address of a KEYB device is 
  511.           discarded. So anything like XXXX:...:KEYB is useless because XXXX 
  512.           will be replaced with 0060. This isn't a problem (or are there 
  513.           keyboard controllers with port address<>hex 60?) 
  514.           If one or two additional keys (SHIFT, CTRL or ALT) are to be pressed, 
  515.           WatchCat looks for the make codes of all two (three) keys and 
  516.           activates if at least one break code of these keys is recognized. 
  517.           Internally, the port address of a KEYB/PKEY device is discarded. So 
  518.           anything like XXXX:...:KEYB is useless because XXXX will be replaced 
  519.           with 0060. This isn't a problem (or are there keyboard controllers 
  520.           with port address<>hex 60?) 
  521.  
  522.           GAME - Game Port 
  523.           A joystick or a special connector on a game port can be used to 
  524.           activate WatchCat. 
  525.           The defaults for GAME are: 0201:F0:GAME, that is: The game port read 
  526.           data address hex 201 is used. A standard game port supports max. two 
  527.           joysticks with two buttons each. Bit mask hex F0 means that any of 
  528.           the four buttons may activate WatchCat. The meanings of the bits are: 
  529.  
  530.                     bit  mask description
  531.                     ΓöÇΓöÇΓöÇ  ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  532.                     0-3   --  X/Y positions; don't use them (confuses WatchCat)
  533.                     4     10  Joystick A, button 1
  534.                     5     20  Joystick A, button 2
  535.                     6     40  Joystick B, button 1
  536.                     7     80  Joystick B, button 2
  537.  
  538.           COM - Serial Port 
  539.           A serial COMx port can be used to activate WatchCat, in conjunction 
  540.           with a special connector/switch. 
  541.           The defaults for COM are: <base>:F0:COM, that is: <base> is the COMx 
  542.           port's base port address: 
  543.  
  544.                     port  base port     For a COM port with a different base port
  545.                     ΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ     address XXXX, use XXXX:F0:COM
  546.                     COM1  03F8
  547.                     COM2  02F8
  548.                     COM3  03E8
  549.                     COM4  02E8
  550.  
  551.           WatchCat sets the lower two bits of the COM port's MODEM CONTROL 
  552.           Register to 1. This register has the address of BASE+4. Setting these 
  553.           bits raises the COMx output lines RTS and DTR to +12V, providing +12V 
  554.           for the connector/switch as a logical high source. 
  555.           WatchCat inputs from the MODEM STATUS REGISTER which has the port 
  556.           address of BASE+6. Only the upper four bits are significant here, 
  557.           hence the bit mask hex F0. The meanings of the bits are: 
  558.  
  559.                     bit  mask description
  560.                     ΓöÇΓöÇΓöÇ  ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  561.                     0-3   --  toggle bits; don't use them (confuses WatchCat)
  562.                     4     10  CTS (Clear To Send) line
  563.                     5     20  DSR (Data Set Ready) line
  564.                     6     40  RI (Ring Indicator) line
  565.                     7     80  DCD (Data Carrier Detect) line
  566.  
  567.  
  568.           LPT - Parallel Port 
  569.           A parallel LPTx port can be used to activate WatchCat, in conjunction 
  570.           with a special connector/switch. 
  571.           The defaults for LPT are: <base>:F8:LPT, that is: <base> is the LPTx 
  572.           port's base port address: 
  573.  
  574.                     port  base port     For a LPT port with a different base port
  575.                     ΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ     address XXXX, use XXXX:F8:LPT
  576.                     LPT1  0378
  577.                     LPT2  0278
  578.  
  579.           WatchCat sets all eight bits of the parallel port's DATA OUT 
  580.           register, which can be found at the device's base port address. This 
  581.           outputs eight logical high lines which can be used to drive some 
  582.           electronics or provide a logical true source (+5V). 
  583.           WatchCat reads from the STATUS IN REGISTER which has the port address 
  584.           of BASE+1. Only the upper five bits are significant here, hence the 
  585.           bit mask hex F8. The meanings of the bits are: 
  586.  
  587.                     bit  mask description
  588.                     ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  589.                     0-2   --  reserved; don't use them (may confuse WatchCat)
  590.                     3     08  ERR (Error) line
  591.                     4     10  SEL (Selected) line
  592.                     5     20  PEND (Paper End) line
  593.                     6     40  ACK (Acknowledge) line
  594.                     7     80  BUSY (Busy) line
  595.  
  596.           USER - User Device 
  597.           Any device with a port address that reflects the electrical high/low 
  598.           state of a switch or other input mechanism can be used to activate 
  599.           WatchCat. 
  600.           The defaults for USER are: XXXX:FF:USER, that is: The port address 
  601.           XXXX is given by you. Mask hex FF enables all bits of the device's 
  602.           input byte. The meanings of the bits depend on the kind of device. 
  603.           Remark: GAME is equivalent to 0201:F0:USER 
  604.  
  605.           Example: If you have a non-standard COM5 serial device at port 
  606.           address hex 3D8, use DEVICE=xxx\WATCHCAT.SYS 03D8:ALL:COM 
  607.  
  608.  
  609. ΓòÉΓòÉΓòÉ 6.3.4. Summary ΓòÉΓòÉΓòÉ
  610.  
  611. You need one parameter for each device that you want to use to activate 
  612. WatchCat. Each parameter has the form: x or x:y or x:y:z. 
  613.  
  614.           Examples: 
  615.  
  616.                     parameter(s)         activate WatchCat with...
  617.                     ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  618.                     KEYB GAME            CTRL+ALT+W key or any joystick button
  619.                     KEYB:CA-W            CTRL+ALT+W key combination
  620.                     KEYB KEYB:F11        F11 or CTRL+ALT+W key
  621.                     GAME:JA2             button 2 of joystick A
  622.                     LPT2:BUSY            BUSY line of LPT2
  623.                     LPT1 LPT2            any input line of LPT1 and LPT2
  624.                     COM1 COM2 COM3 COM4  any input line of any COM port
  625.                     03D8:DCD:COM         Data Carrier Detect line of a
  626.                                          non-standard COM port at port
  627.                                          address hex 3D8
  628.                     01B1:ALL:USER        any input line of port 1B of a
  629.                                          8255 chip with base address 01B0
  630.  
  631.  
  632. ΓòÉΓòÉΓòÉ 6.3.5. Converting WatchCat 1.x options ΓòÉΓòÉΓòÉ
  633.  
  634. The following table compares all WatchCat 1.x  switches and the new switches. 
  635.  
  636. old parameter      new parameter        parameter for
  637.  
  638. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ           ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ              ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  639.  
  640. /1            LPT1            watchcat.sys
  641. /2            LPT2            watchcat.sys
  642. /I=P,B          P:B:hw-type         watchcat.sys
  643. /G            GAME            watchcat.sys
  644. /GA           GAME:ALL          watchcat.sys
  645. /C1           COM1            watchcat.sys
  646. /C2           COM2            watchcat.sys
  647. /C3           COM3            watchcat.sys
  648. /C4           COM4            watchcat.sys
  649. /Bx           dev:mask          watchcat.sys
  650. /T            not supported any longer
  651. /A            menu(Options/Options...)  (program)
  652. /P            menu(Options/Options)    (program)
  653. /D            menu(Options/Options)    (program)
  654. /M            /NOCOLOR          watchcat.sys or
  655.                           watchcat.exe
  656.             menu(Options/Options)    (program)
  657. /S:x           menu(Options/Options)    (program)
  658. /on /off /toggle     WPS object (context menu)  WPS object (right mouse button)
  659. exit           not supported any longer
  660. shadow          not supported any longer
  661. registerWPS                     installation program
  662. deregisterWPS      deregisterWPS        installation program
  663. clearini         (automatically)
  664.  
  665.  
  666. ΓòÉΓòÉΓòÉ 6.4. How to build a connector ΓòÉΓòÉΓòÉ
  667.  
  668. You don't have to build a connector. WatchCat now supports the keyboard too. If 
  669. you do not want to use the keyboard, you can also use a switch for the parallel 
  670. port or the serial port. Another way of activating WatchCat is to use a 
  671. joystick. 
  672.  
  673.  
  674. ΓòÉΓòÉΓòÉ 6.4.1. Connecting with the parallel port ΓòÉΓòÉΓòÉ
  675.  
  676. It's so simple... Just go out and buy a 25-pin male SUB-D connector that fits 
  677. to your parallel port, and a single-pole double-throw (SPDT) switch.  The 
  678. switch looks like this: In the position shown pins 2 and 3 are connected. 
  679.  
  680. Connect the following pins: 
  681.  
  682.  
  683.  switch  connector DB-25
  684.  
  685.  1   <-   2 (DATA 0 signal, output)       used as logical HIGH
  686.  
  687.  2   ->  11 (BUSY signal, input)          used to input the state
  688.  
  689.  3   <-  19 (GROUND)                      used as logical LOW
  690.  
  691. The following picture gives an overview how to connect for these situations: 
  692.  
  693. You might also want to use another kind of switch: one that simply opens and 
  694. closes one connection. It's just like the one that is used as a Turbo Button in 
  695. your computer case, i.e. if you don't use your Turbo Button you can use it as 
  696. the activation switch for WatchCat. Get a switch that stays in the position in 
  697. which you put it. 
  698.  
  699. You can use one like your case's Reset Button, but you might have to hold it 
  700. down for a while before WatchCat recognizes it. 
  701.  
  702. You will also need one 4.7 kOhm resistor. 
  703.  
  704. In the picture shown both pins are connected when the button is pressed: 
  705.  
  706. Connect one end of the resistor to pin 11, the other end to pin 19 of the 
  707. parallel port connector. Pin 11 is also connected to one pin of the switch. The 
  708. other pin of the switch is connected to pin 2 of the parallel port. 
  709.  
  710. The following picture gives an overview of how to connect for these situations: 
  711.  
  712.  
  713. ΓòÉΓòÉΓòÉ 6.4.2. Connecting with a serial COMx port ΓòÉΓòÉΓòÉ
  714.  
  715. The same two kinds of connectors (as described in the previous section) can be 
  716. used here, too. Get a 25-pin or 9-pin female connector for the serial port. 
  717. For the first type of switch (SPDT), connect the following pins: 
  718.  
  719.  
  720.  25-pin     9-pin      connector on COMx
  721.  
  722.  1 <- 20    1 <- 4     (+12V DC output)      used as logical HIGH
  723.  
  724.  2 -> 22    2 -> 9     (RI)                  used to input the state
  725.  
  726.  3 <-  7    3 <- 5     (GROUND)              used as logical LOW
  727.  
  728. For the second type of switch: (Turbo Button...) Connect one end of the 
  729. resistor to pin 22 (25 pin)/9 (9 pin), the other end to pin 7/5 of the COMx 
  730. port connector. Pin 22/9 is also connected to one pin of the switch. The other 
  731. pin of the switch is connected to pin 20/4 of the serial port. Note that here 
  732. the resistor has to be around 12kOhm. 
  733.  
  734.  
  735. ΓòÉΓòÉΓòÉ 6.4.3. connecting with game port ΓòÉΓòÉΓòÉ
  736.  
  737. The same two kinds of connectors can be used here, too. Get a 15-pin male 
  738. connector for the game port.  For the first type of switch (SPDT), connect the 
  739. following pins: 
  740.  
  741.  
  742.  switch          connector DB-15 (game port)
  743.  
  744.  1   <-    1     (+5V DC output)                  used as logical HIGH
  745.  
  746.  2   ->   XX     (fire button, input)             used to input the
  747.                                                   state
  748.  
  749.  3   <-    4     (GROUND)                         used as logical LOW
  750.  
  751. Where XX equals  2  for  joystick A, button 1
  752.          7    joystick A, button 2
  753.          10    joystick B, button 1  <- recommended
  754.          14    joystick B, button 2
  755.  
  756. For the second type of switch: (Turbo Button...) Connect one end of the 
  757. resistor to pin XX, the other end to pin 4 of the game port connector. Pin XX 
  758. is also connected to one pin of the switch. The other pin of the switch is 
  759. connected to pin 1 of the game port. Note that here the resistor has to be 
  760. 4,7kOhm. 
  761.  
  762. For the game port, you should know that EVERY time you press (and hold) one 
  763. joystick's fire button, WatchCat is activated. We only say this because some 
  764. people are said to play games under OS/2... In this case we recommend to use 
  765. one of joystick B's buttons as the WatchCat switch (or build a connector on the 
  766. game port that uses the corresponding pin). Use the /B switch to specify which 
  767. button WatchCat has to watch - thereafter, you can safely play games with the 
  768. other joystick. 
  769.  
  770.  
  771. ΓòÉΓòÉΓòÉ 6.5. Configuring WatchCat ΓòÉΓòÉΓòÉ
  772.  
  773. Configuring WatchCat has become easier. You can use the program itself to do 
  774. so. If you change any settings (sort, etc.) through a menu point, this 
  775. parameter is changed until the next start of WatchCat only. 
  776.  
  777. If you want to change a parameter persistently (over boot time) chose Options 
  778. ... from the Options menu. 
  779.  
  780. This window looks similar to this: 
  781.  
  782. Γòö[Γûá]ΓòÉ[Options]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
  783. ΓòæStart-up windows:                                                             Γòæ
  784. Γòæ  [ ] Proc-info   [x] Threads    [x] Libraries                                Γòæ
  785. Γòæ  [ ] Semaphores  [ ] Shared Mem                                              Γòæ
  786. Γòæ  ( ) Modules     () Processes  ( ) PM                                       Γòæ
  787. Γòæ                                                                              Γòæ
  788. ΓòæSort:                                                                         Γòæ
  789. Γòæ  Modules:      () type  ( ) name  ( ) pid                                   Γòæ
  790. Γòæ  Processes:    ( ) type  ( ) name  () pid                                   Γòæ
  791. Γòæ  PM-Processes: ( ) type  () name  ( ) pid                                   Γòæ
  792. Γòæ                                                                              Γòæ
  793. ΓòæOther:                                                                        Γòæ
  794. Γòæ  path:         ( ) full  () names only                                      Γòæ
  795. Γòæ  lines:        () 25    ( ) 43    ( ) 50                                    Γòæ
  796. Γòæ  color:        () color ( ) mono                                            Γòæ
  797. Γòæ                                                                              Γòæ
  798. Γòæ    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                                        Γòæ
  799. Γòæ    Γöé  Save  Γöé  Γöé Change Γöé  Γöé Cancel Γöé                                        Γòæ
  800. Γòæ    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                                        Γòæ
  801. Γòæ                                                                              Γòæ
  802. ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
  803.  
  804. Change anything that requires to be changed... If you select Save all Settings 
  805. will be saved and restored the next time WatchCat is started. If you select 
  806. Change all system parameters are changed, but they are not saved. Last but not 
  807. least if you select Cancel the window is closed without any action. 
  808.  
  809.           The parameters are saved in a file called watchcat.ini This file is 
  810.           not an OS/2-PM standard ini-file. It is not required that this file 
  811.           exists. If the file does not exist WatchCat uses the default values. 
  812.           If you have any problems because you changed parameters the wrong 
  813.           way, just delete this file. (It is placed in the directory where the 
  814.           device driver is installed). 
  815.  
  816.  As you can see there are three major sections: 
  817.  
  818.  Start-up windows: You can select between one and three windows that should be 
  819.  opened automatically on program start. You can also decide whether the default 
  820.  view of the main window is a process list, a complete module list or just the 
  821.  PM-programs. 
  822.  
  823.  Sort:For any of these three types you can select a sort criterion. You can 
  824.  sort by module name, module type or process id. 
  825.  
  826.  In the last section you can decide whether all module names should be 
  827.  displayed with full path, how many lines you want to have and whether you need 
  828.  color or not. 
  829.  
  830.  
  831. ΓòÉΓòÉΓòÉ 6.6. Using the WPS object ΓòÉΓòÉΓòÉ
  832.  
  833. This chapter describes how to use the Workplace Shell object: 
  834.  
  835. The context menu
  836. The "Option" page
  837. The "Hotkey" page
  838. The "Window" page
  839.  
  840.           Note: The WatchCat object allows the user to activate WatchCat and to 
  841.           change some global settings. WatchCat is started by the CONFIG.SYS. 
  842.           Therefore there is no need to put this object into the start-up 
  843.           folder. 
  844.  
  845.           Note: In contrast to WatchCat 1.x Settings like sort, ... can be done 
  846.           from the WatchCat program (not the object). 
  847.  
  848.  
  849. ΓòÉΓòÉΓòÉ 6.6.1. The context menu ΓòÉΓòÉΓòÉ
  850.  
  851. The context menu of WatchCat looks like this: 
  852.  
  853. There are two views for WatchCat. Select them by Open. Either you can activate 
  854. a detached version of WatchCat (which is started by the CONFIG.SYS) or you can 
  855. start a new windowed instance on the Workplace Shell. 
  856.  
  857. If you need help, click on WatchCat in the Help menu. This will load this 
  858. online documentation. 
  859.  
  860. The last menu point allows the user to temporary switch WatchCat on/off. The 
  861. current state is represented by the icon (you try it...). 
  862.  
  863.  
  864. ΓòÉΓòÉΓòÉ 6.6.2. The "Options" page ΓòÉΓòÉΓòÉ
  865.  
  866. The Options page looks like this: 
  867.  
  868. This page allows the user to switch on or off a device specified in the 
  869. CONFIG.SYS. In the case above the driver watchcat.sys was called with the 
  870. parameters KEYB and LPT2. Therefore you can turn on or off activating WatchCat 
  871. by the keyboard or a switch for LPT2. 
  872.  
  873. All other devices (in this case Game, COM) are not selectable (disabled). 
  874.  
  875.           Note: Per default (if you selected easy installation) only the 
  876.           keyboard can be used to activated WatchCat. Therefore only the 
  877.           keyboard can be turned on or off. All other items are not selectable 
  878.           (disabled). 
  879.  
  880.  
  881. ΓòÉΓòÉΓòÉ 6.6.3. The "Hotkey" page ΓòÉΓòÉΓòÉ
  882.  
  883. The Hotkey page looks like this: 
  884.  
  885. This page does not appear if you have not selected hotkeys in the CONFIG.SYS. 
  886. You can easily change the hotkey here (e.g. if you have compatibility problems 
  887. with other programs). 
  888.  
  889.  
  890. ΓòÉΓòÉΓòÉ 6.6.4. The "Window" page ΓòÉΓòÉΓòÉ
  891.  
  892. The Window page looks like this: 
  893.  
  894. Select a default view here. A double-click on the WatchCat object will either 
  895. activate a detached version of WatchCat or will start a windowed version 
  896. depending on your choice here. This is the only boot persistent choice. (It 
  897. will also be saved by DeskMan/2). 
  898.  
  899. In the above case a double-click on the WatchCat item would start a second 
  900. instance of WatchCat in a window. 
  901.  
  902.  
  903. ΓòÉΓòÉΓòÉ 7. Activating WatchCat ΓòÉΓòÉΓòÉ
  904.  
  905. Activating WatchCat 
  906.  
  907. The way you activate WatchCat depends on your configuration. If you have chosen 
  908. the default configuration simply press Ctrl-Alt-W to activate the program. 
  909.  
  910.           Note: If you do not want to use a hotkey you can also build a simple 
  911.           switch for the parallel port or the serial port, or activate WatchCat 
  912.           by a joystick 
  913.  
  914.  The monitor is switched to text mode and WatchCat appears. Use the cursor keys 
  915.  or the mouse to select a process or module. 
  916.  
  917.  If you want to kill an application, press k. To switch to a process (if 
  918.  possible), press Enter. To open a shell, press space. To get a context menu, 
  919.  press the right mouse button. You can also select items from the main menu. 
  920.  
  921.  
  922. ΓòÉΓòÉΓòÉ 8. Understanding WatchCat ΓòÉΓòÉΓòÉ
  923.  
  924. Understanding WatchCat 
  925.  
  926. The following sections explain how to use WatchCat and how to navigate through 
  927. the supplied information. 
  928.  
  929.  
  930. ΓòÉΓòÉΓòÉ 8.1. Using WatchCat ΓòÉΓòÉΓòÉ
  931.  
  932. The main screen of WatchCat looks like this: 
  933.  
  934. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  935. Γöé Info   Action   Options   Add-On   Help                  (Press ESC to exit) Γöé
  936. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  937. ΓöîΓöÇ[Process list]ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ[]ΓöÉΓòö[Γûá]ΓòÉ[Dynamic Link Libraries]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
  938. ΓöéMOD TYPE    PID CPU NAME              ΓöéΓòæmod DLL(16)         CHESSAI.DLL       Γòæ
  939. ΓöéΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ    ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ              ΓöéΓòæmod DLL(32)         DOSCALL1.DLL      Γòæ
  940. Γöéprg detach    2     TEST.EXE          Γòæmod DLL(32)         PMDRAG.DLL        Γòæ
  941. Γöéprg detach    3     BATSERV.EXE       ΓûôΓòæmod DLL(32)         PMGPI.DLL         Γòæ
  942. Γöéprg detach    4     NMPBIND.EXE       ΓûæΓòæmod DLL(32)         PMMERGE.DLL       Γòæ
  943. Γöéprg FS        5  6% PMSHELL.EXE       ΓûæΓòæmod DLL(32)         PMSHAPI.DLL       Γòæ
  944. Γöéprg FS        7     HARDERR.EXE       ΓûæΓòæmod DLL(32)         PMWIN.DLL         Γòæ
  945. Γöéprg PM        8     PMSPOOL.EXE       ΓûæΓòæ                                      Γòæ
  946. Γöéprg PM        9     PMSHELL.EXE (FeelXΓûæΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
  947. Γöéprg PM        A     POPUPPM.EXE (popupΓûæΓöî[Γûá]ΓöÇ[Threads]ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ[]ΓöÉ
  948. Γöéprg PM        B     ITSNOW.EXE (ItsNowΓûæΓöé ID PRIO STATUS  BLOCKID              Γöé
  949. Γöéprg PM        D     FEELX.EXE (FeelX) ΓûæΓöéΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ              Γöé
  950. Γöéprg PM       12 68% OS2CHESS.EXE (OS/2ΓûæΓöé  1  200 blocked fdfb0748             Γöé
  951. Γöéprg PM       15     PULSE.EXE         ΓûæΓöé  2  200 ready    40053d6             Γöé
  952. Γöéprg Vio      16     CMD.EXE (WatchCat.ΓûæΓöé  3  200 blocked  40053dc             Γöé
  953. Γöéprg Vio      19     CMD.EXE (T.EXE)   ΓûæΓöé                                      Γöé
  954. Γöéprg Vio      1A     CMD.EXE           ΓûæΓöé                                      Γöé
  955. Γöéprg Vio      1B 25% WATCHCAT.EXE      ΓûæΓöé                                      Γöé
  956. Γöéprg PM       1E     VIEWDOC.EXE (InforΓöé                                      Γöé
  957. ΓööΓûôΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓöÿΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  958. WatchCat (c)'94 by Felix von Normann, Thomas Opheys, Passau, Germany
  959.  
  960. The usage of WatchCat is very similar to PM. You can use either the mouse or 
  961. the keyboard to navigate through the windows. The main menu is at the top of 
  962. the screen. A status line is visible at the bottom. The of the screen rest is 
  963. filled with information windows. You can have between 1 and 4 windows visible 
  964. at the same. 
  965.  
  966. The main difference between the way to use WatchCat and the way to use (native) 
  967. PM is that you activate a window by just moving the mouse onto it. You don't 
  968. have to click explicitly on it. (BTW: This is the way of activating windows 
  969. when you're using FeelX ...) 
  970.  
  971. The active window has a double border, while all other windows have a single 
  972. border. 
  973.  
  974. The main idea is that there is one "main" window (this is the process or module 
  975. window). All other windows show informations related to one item of the main 
  976. window. 
  977.  
  978. As a consequence, the process window cannot be closed. You can select a process 
  979. / module by using the mouse or keyboard. The information in any other (most) 
  980. windows depend on this selection! For example the Library window does not list 
  981. all the libraries in the system but only those that are used by the current 
  982. selected process. 
  983.  
  984.           Note: All windows have a selection bar but only the selection in the 
  985.           process / module list has a meaning. The other windows have a 
  986.           selection bar only for easier usage. 
  987.  
  988.  To learn how to use WatchCat, just play around. 
  989.  
  990.           Note: It is not dangerous to play around with WatchCat. All you need 
  991.           to know is that "K" kills a program "Enter" switches to the selected 
  992.           program if possible "ESC" leaves the WatchCat screen (but does not 
  993.           end WatchCat). 
  994.  
  995.  
  996. ΓòÉΓòÉΓòÉ 8.2. The main menu ΓòÉΓòÉΓòÉ
  997.  
  998. The first menu item (called Info) can be used to select what kind of 
  999. information is displayed. The topmost menu item affects the information in the 
  1000. main window. You can view either all modules in the system (that are Device 
  1001. Drivers, DLL, Dos and OS/2 programs, ...) or only the processes (in fact 
  1002. programs) or just the PM-programs (mostly responsible for system hangups). 
  1003.  
  1004. The following items in the menu Info open new windows with additional 
  1005. information about the currently selected process. 
  1006.  
  1007. The Action menu allows special actions. You can open a shell with the first 
  1008. menu point. The second menu point forces WatchCat to redraw the entire screen 
  1009. and update the information. You can kill a process with the third menu item. 
  1010. Sending WM_QUIT does make sense only for PM programs. Sending WM_QUIT 
  1011. terminates the PM program, but not with as much brutality as killing the 
  1012. application. If this menu item does not work, you must kill the application. 
  1013.  
  1014. The Options menu lets you change a lot of settings. Please note that it is 
  1015. necessary to select options via the menu item Options ... to save them 
  1016. permanently. 
  1017.  
  1018. The Add-On menu contents depend on the WatchCat special function DLL. You can 
  1019. easily write your own WatchCat module. Any window created with an external DLL 
  1020. is listed here. 
  1021.  
  1022. If you forget something about keys and usage, select Help to get help. 
  1023.  
  1024.           Note: WatchCat does not support overlaying windows. This restriction 
  1025.           implies that the windows are not updated while a menu is visible. 
  1026.  
  1027.  
  1028. ΓòÉΓòÉΓòÉ 8.3. The "Process list" window ΓòÉΓòÉΓòÉ
  1029.  
  1030. This is the most important window. This window lists all processes or all 
  1031. modules currently loaded / running in the system. 
  1032.  
  1033.                     ΓòöΓòÉ[Process list]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
  1034.                     ΓòæMOD TYPE    PID CPU NAME              Γòæ
  1035.                     ΓòæΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ    ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ              Γòæ
  1036.                     Γòæprg PM       12 83% OS2CHESS.EXE (OS/2
  1037.                     Γòæprg PM       15     PULSE.EXE         Γûæ
  1038.                     Γòæprg Vio      16     CMD.EXE (WatchCat.Γûæ
  1039.                     Γòæprg Vio      19     CMD.EXE (T.EXE)   Γûô
  1040.                     Γòæprg Vio      1A     CMD.EXE (CMD.EXE) Γûæ
  1041.                     Γòæprg PM       1E     VIEWDOC.EXE (Infor
  1042.                     ΓòÜΓûôΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓò¥
  1043.  
  1044.  The MOD column gives the type of the module: prg means program, while mod 
  1045.  means any other module. 
  1046.  
  1047.  The TYPE column gives more information about the module type. Currently the 
  1048.  following types are supported: BaseDev - base device driver, Dev - physical 
  1049.  device driver, VDev - virtual device driver, IFS - installable file system, 
  1050.  DLL - Dynamic link library, Font - font, VDM - virtual DOS machine, detach - 
  1051.  detached process, FS - full screen OS/2 program, Vio - windowed program, PM - 
  1052.  presentation manager program. 
  1053.  
  1054.  The PID column represents the process id of the module in hexadecimal notion. 
  1055.  This id is available only for processes. 
  1056.  
  1057.  The CPU column gives information about the relative CPU usage by all 
  1058.  processes. This is not an exact value, but an estimation. Please note that 
  1059.  this value is relative. It may look like WatchCat is very CPU-intensive. This 
  1060.  is not true. If WatchCat is the only thing running it is trivial that it alone 
  1061.  uses the CPU. Try to run pulse and you'll see that pulse will get much more 
  1062.  CPU time than WatchCat itself. 
  1063.  
  1064.  The Name column displays the name and optionally the path of the module. 
  1065.  
  1066.           Since DOS is more or less only a program loader it cannot provide 
  1067.           information about processes, etc. Of course the virtual DOS machines 
  1068.           inherit this problem. Therefore an OS/2 process like WatchCat can get 
  1069.           the information there is concerning a virtual DOS machine. But it is 
  1070.           impossible (except with a lot of technical tricks) to get information 
  1071.           about the programs running in the DOS session. To provide more 
  1072.           information about the DOS session than just "VDM" WatchCat tries to 
  1073.           extract the window title of the VDM. This might be a hint about what 
  1074.           program is running in the VDM. 
  1075.  
  1076.           Getting the window name is not a CPU-trivial task for WatchCat. 
  1077.           Therefore this information is updated very, very rarely. 
  1078.  
  1079.  
  1080. ΓòÉΓòÉΓòÉ 8.4. The Process info - window ΓòÉΓòÉΓòÉ
  1081.  
  1082. This window provides a little more detailed information about a process. We 
  1083. believe this is self-explanatory. 
  1084.  
  1085.                     Γòö[Γûá]ΓòÉ[Process details]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
  1086.                     Γòæpath:        G:\OS2\                  Γòæ
  1087.                     Γòæname:        CMD.EXE                  Γòæ
  1088.                     ΓòæProcess id:  19                       Γòæ
  1089.                     ΓòæParent pid:  5                        Γòæ
  1090.                     ΓòæSession:     27                       Γòæ
  1091.                     Γòæhandle:      0448                     Γòæ
  1092.                     ΓòæStatus:      running                  Γòæ
  1093.                     Γòætype:        Windowable (32 bit)      Γòæ
  1094.                     Γòæ                                      Γòæ
  1095.                     ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
  1096.  
  1097.  
  1098. ΓòÉΓòÉΓòÉ 8.5. The Threads window ΓòÉΓòÉΓòÉ
  1099.  
  1100.                     Γòö[Γûá]ΓòÉ[Threads]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
  1101.                     Γòæ ID PRIO STATUS  BLOCKID              Γòæ
  1102.                     ΓòæΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ              Γòæ
  1103.                     Γòæ  1  200 blocked fffe0a4e             Γòæ
  1104.                     Γòæ  2  300 running fff7c2db             Γòæ
  1105.                     Γòæ  3  200 blocked  62800ee             Γòæ
  1106.                     Γòæ  4  301 blocked fffe0a6e             Γòæ
  1107.                     ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
  1108.  
  1109.  The ID column does lists the thread ID. 
  1110.  
  1111.  The PRIO column shows the priority of a thread. This value is given in hex. 
  1112.  The priorities have the following meaning: 
  1113.  
  1114.    PRIO  Explanation
  1115.    ΓöÇΓöÇΓöÇΓöÇ  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1116.    1xx  low priority
  1117.    2xx  normal priority
  1118.    4xx  foreground server
  1119.    3xx  time critical
  1120.  
  1121.  The STATUS column gives information about the thread's state. A thread can be 
  1122.  running (but there is only one WatchCat thread running when this info is 
  1123.  displayed...), be blocked (then the BLOCKID column gives additional 
  1124.  information), a thread can also be ready (this means that the thread is not 
  1125.  waiting but will be running as soon as it gets CPU time). If a thread is 
  1126.  frozen, then the application is loaded with the preload-feature of OS/2. 
  1127.  
  1128.  
  1129. ΓòÉΓòÉΓòÉ 8.6. The Libraries window ΓòÉΓòÉΓòÉ
  1130.  
  1131.                     Γòö[Γûá]ΓòÉ[Dynamic Link Libraries]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
  1132.                     Γòæmod DLL(32)         DOSCALL1.DLL      Γòæ
  1133.                     Γòæmod DLL(32)         KBDCALLS.DLL      Γòæ
  1134.                     Γòæmod DLL(32)         MOUCALLS.DLL      Γòæ
  1135.                     Γòæmod DLL(32)         MSG.DLL           Γòæ
  1136.                     Γòæmod DLL(32)         NLS.DLL           Γòæ
  1137.                     Γòæmod DLL(32)         VIOCALLS.DLL      Γòæ
  1138.                     ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
  1139.  
  1140.  The library window just lists all the dynamic link libraries (DLL) used by 
  1141.  this process. Please note that this list is directly associated with the 
  1142.  currently selected process. 
  1143.  
  1144.  
  1145. ΓòÉΓòÉΓòÉ 8.7. The Semaphores window ΓòÉΓòÉΓòÉ
  1146.  
  1147.                     Γòö[Γûá]ΓòÉ[Semaphores]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
  1148.                     ΓòæNAME                  INDEX REF REQ FLΓòæ
  1149.                     ΓòæΓöÇΓöÇΓöÇΓöÇ                  ΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓòæ
  1150.                     Γòæ\SEM\LKNED001.SEM      53AC   1   0 0 
  1151.                     Γòæ\SEM\LKNED002.SEM      53B2   1   0 0 Γûæ
  1152.                     Γòæ\SEM\LKNED003.SEM      53B8   1   0 0 Γûæ
  1153.                     Γòæ\SEM\PMHDERR.SEM       53CA   1   0 2 Γûæ
  1154.                     Γòæ\SEM\SMGCONT.SEM       53BE   2   0 0 Γûæ
  1155.                     Γòæ\SEM\VIOPOPUP          539A  19   0 0 Γûô
  1156.                     Γòæ\SEM\VIOPRTSC          53A0  16   0 8 
  1157.                     ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
  1158.  
  1159.  This window has the least information value. It lists all 16-Bit semaphores 
  1160.  that are used by the current selected process. 
  1161.  
  1162.  
  1163. ΓòÉΓòÉΓòÉ 8.8. Shared Memory window ΓòÉΓòÉΓòÉ
  1164.  
  1165.                     Γòö[Γûá]ΓòÉ[Shared Memory]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
  1166.                     ΓòæNAME                      SIZE    SEL Γòæ
  1167.                     ΓòæΓöÇΓöÇΓöÇΓöÇ                      ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ Γòæ
  1168.                     ΓòæPMDRAG.MEM               :  4096B 960FΓòæ
  1169.                     ΓòæPMGLOBAL.MEM             :  4096B 961FΓòæ
  1170.                     ΓòæPULSECTL                 :    48K 893FΓòæ
  1171.                     Γòæ                                      Γòæ
  1172.                     Γòæ                                      Γòæ
  1173.                     Γòæ                                      Γòæ
  1174.                     Γòæ                                      Γòæ
  1175.                     ΓòÜΓûôΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓò¥
  1176.  
  1177.  This window lists all shared memory segments used by a process. It also shows 
  1178.  the size of the memory block, the Selector and the handle. 
  1179.  
  1180.  
  1181. ΓòÉΓòÉΓòÉ 9. Running WatchCat from the command prompt ΓòÉΓòÉΓòÉ
  1182.  
  1183. WatchCat & prompt 
  1184.  
  1185. Don't forget that you can also start WatchCat from the command prompt. We 
  1186. distinguish between two modes: 
  1187.  
  1188.  o If you detach WatchCat (i.e. type detach watchcat  at the command prompt), 
  1189.    WatchCat is activated by hotkey. This is the mechanism when WatchCat is 
  1190.    added to the CONFIG.SYS. 
  1191.  
  1192.  o If you start WatchCat like any other program (by typing "WatchCat" at the 
  1193.    command prompt) it does not switch to Full-Screen, and it provides all 
  1194.    information immediately. You don't have a hotkey for this WatchCat session. 
  1195.  
  1196.           Note: You can have one detached and one or more started (windowed) 
  1197.           WatchCat instances at the same time. 
  1198.  
  1199.  
  1200. ΓòÉΓòÉΓòÉ 10. Using external WatchCat modules ΓòÉΓòÉΓòÉ
  1201.  
  1202. Using external WatchCat modules. 
  1203.  
  1204. On start-up, WatchCat looks for DLLs in its directory and tries to find out 
  1205. whether they are modules for WatchCat or not. If a DLL is a WatchCat module it 
  1206. is integrated into WatchCat as if it were part of the program. 
  1207.  
  1208. The advantages are: 
  1209.  
  1210.  o You can delete all unneeded modules 
  1211.  
  1212.  o You can write your own modules 
  1213.  
  1214.  o It is easier to extend WatchCat 
  1215.  
  1216.  Currently there is only one module supplied (and many ideas for new modules). 
  1217.  This module allows a programmer to print debugging text in a WatchCat window. 
  1218.  
  1219.  
  1220. ΓòÉΓòÉΓòÉ 10.1. Using the wcprintf module ΓòÉΓòÉΓòÉ
  1221.  
  1222. This module allows the user to print text in a WatchCat window. 
  1223.  
  1224. All you have to do is to write into the pipe \PIPE\WATCHCAT. This can also be 
  1225. done from DOS sessions. 
  1226.  
  1227.           Example: type read.me >\PIPE\WATCHCAT 
  1228.  
  1229.  If you are writing a PM program and you have trouble with the message 
  1230.  processing, these routines might be useful because they have no additional 
  1231.  message overhead. Examples are the following situations: 
  1232.  
  1233.  o You want to hook the message queue. Sending a text string to another window 
  1234.    increases (potentially) the message processing. 
  1235.  
  1236.  o You need information about all mouse movement or mouse clicks in your 
  1237.    application. Obviously moving the mouse to another window to display 
  1238.    debugging infos would result in "wrong" messages. 
  1239.  
  1240.  o Your application hangs up the PM and you don't know why. You can print 
  1241.    debugging strings, but you are not sure whether all debugging strings are 
  1242.    displayed. 
  1243.  
  1244.  WatchCat can help because it can be activated without key and mouse (by 
  1245.  hardware switch or your program) and it is full-screen. Therefore it works 
  1246.  even if the PM is hung. 
  1247.  
  1248.  If you want to use this module simply include wcapi.h. Then #define WCDEBUG. A 
  1249.  call to wcprintf(char *format, ...) pipes its output into a WatchCat window. 
  1250.  If WCDEBUG is not set and optimization is turned on, the function call is 
  1251.  optimized away. 
  1252.  
  1253.  You can activate WatchCat from the program by calling WatchCat(). 
  1254.  
  1255.  You must link your application with wcatdeb.lib. It is necessary that 
  1256.  wcatdeb.dll is in the same directory as watchcat.exe 
  1257.  
  1258.  
  1259. ΓòÉΓòÉΓòÉ 11. Interfacing WatchCat ΓòÉΓòÉΓòÉ
  1260.  
  1261. Interfacing WatchCat 
  1262.  
  1263. There are two ways of interfacing to WatchCat. First, your program can activate 
  1264. WatchCat and second, you can write your own WatchCat module and write directly 
  1265. into a WatchCat window. 
  1266.  
  1267. The API is still under development. If one of the functions does not work as 
  1268. expected or you need a function not provided now please contact us. (All 
  1269. functions were developed with IBM C/Set++; they are portabel and partly tested 
  1270. for Borland, EMX, Watcom; cf. testmod.c) 
  1271.  
  1272.  
  1273. ΓòÉΓòÉΓòÉ 11.1. Activating WatchCat from a program ΓòÉΓòÉΓòÉ
  1274.  
  1275. There are two ways to activate WatchCat from your own program: 
  1276.  
  1277.  o Use the following code sequence: 
  1278.  
  1279.  
  1280.           #include INCL_DOSSEMAPHORES
  1281.            ...
  1282.           #include <os2.h>
  1283.            ...
  1284.           HEV hev;
  1285.            ...
  1286.           if (!DosOpenEventSem((PSZ)"\\Sem32\\WatchCat", &hev))
  1287.              {
  1288.              DosPostEventSem(hev);
  1289.              DosCloseEventSem(hev);
  1290.              }
  1291.  
  1292.  o Link with wcatdeb.lib, and use the following code sequence: 
  1293.  
  1294.  
  1295.           #include <wcapi.h>
  1296.            ...
  1297.           WatchCat();
  1298.  
  1299.  
  1300. ΓòÉΓòÉΓòÉ 11.2. Writing your own DLL ΓòÉΓòÉΓòÉ
  1301.  
  1302. Writing your own WatchCat DLL is not difficult. WatchCat searches its own 
  1303. directory for any WatchCat DLL. 
  1304.  
  1305. A WatchCat DLL is a dynamic link library that contains at least the functions 
  1306. WCatRegister and WCatInit. More specifically, WatchCat does the following: Call 
  1307. WCatRegister(), call WCatInit(), start WCatThread() as a thread, if present. 
  1308.  
  1309. To make it easier, you have to compile dllbase.c and link it with your 
  1310. application. Then you have access to all functions with prototypes in wcapi.h. 
  1311. dllbase contains WCatRegister and initializes the "system". 
  1312.  
  1313. Your own written module should contain at least WCatInit. Use this function to 
  1314. create all windows you need (use WCatBegWindow). You can also insert headlines 
  1315. (use WCatSetTitle). Don't call WCatBegWindow later. 
  1316.  
  1317. The WCatThread function is started as a normal-priority thread. You can use all 
  1318. functions here too. 
  1319.  
  1320. WatchCat is event-driven. If an event occurs (mouse, keyboard, ...) WatchCat 
  1321. calls a specific DLL-function (if present). 
  1322.  
  1323. Your function is called with a void* parameter. This is a window handle 
  1324. identical to one allocated with WCatBegWindow. It is your job to find out if 
  1325. this handle belongs to a window which message you want to intercept. Your 
  1326. function can return either TRUE (non-zero) or FALSE. TRUE indicates that the 
  1327. parent is not called, so the default action is not done. On the other hand 
  1328. FALSE indicates that the default action has to be done. 
  1329.  
  1330. Currently the following functions are supported: 
  1331.  
  1332.  
  1333.           int WCatKey(void *win_handle, int scan, int ascii, int shift)
  1334.              win_handle           window handle
  1335.              scan                 Make-Code
  1336.              ascii                Ascii-Code or 0
  1337.              shift                0=no shift, 2 = Ctrl, 4 = Alt
  1338.  
  1339.           int WCatB1Click(void *win_handle, int x, int y)
  1340.              win_handle           window handle
  1341.              x                    x-coordinate (relative to window)
  1342.              y                    y-coordinate (relative to window)
  1343.  
  1344.           int WCatSelected(void *win_handle, int i)
  1345.              win_handle           window handle
  1346.              i                    line (0-based)
  1347.  
  1348.           int WCatInformIfProcessChanged(void *win_handle, int i)
  1349.              win_handle           window handle
  1350.              i                    line which is selected now
  1351.  
  1352.           WCatTimer()
  1353.              called every second
  1354.  
  1355.           WCatThread()
  1356.              called as a thread
  1357.  
  1358.  Please note that your DLL can provide the above functions. They are called by 
  1359.  WatchCat. Do not call the functions yourself. On the other hand all above 
  1360.  functions are optional. You do not need to provide any of them. 
  1361.  
  1362.           Example: See the testmod.c file for an example. 
  1363.  
  1364.           Writing a DLL for WatchCat is not very difficult, but not trivial 
  1365.           either. Please read the documentation carefully to see if any library 
  1366.           initialization is required. When one of the above functions is called 
  1367.           you can assume that this is done in the WatchCat process context. 
  1368.           Note that your DLL may be called from several WatchCat instances (The 
  1369.           example ignores this problem). In the WatchCat context you can call 
  1370.           all API functions except WCatBegWindow. If the function is called 
  1371.           from outside the WatchCat context, you are not allowed to call this 
  1372.           API. 
  1373.  
  1374.  
  1375. ΓòÉΓòÉΓòÉ 11.3. API Reference ΓòÉΓòÉΓòÉ
  1376.  
  1377. The following reference describes all functions that can be used in your DLL. 
  1378.  
  1379.           Note: To use these functions it is necessary to compile dllbase.c and 
  1380.           link it to your DLL. 
  1381.  
  1382.           Note: These functions can only be used in the WatchCat-context. Never 
  1383.           call these functions from another program or a DLL used by another 
  1384.           program. This would definitely result in a protection violation. 
  1385.  
  1386.  
  1387. ΓòÉΓòÉΓòÉ 11.3.1. WCatBegWindow ΓòÉΓòÉΓòÉ
  1388.  
  1389.  Prototype: 
  1390.  
  1391.  
  1392.           void * _System WCatBegWindow(char *title, char *Menuentry,
  1393.                                        char *description, void (*fn)());
  1394.  
  1395.  Parameters: 
  1396.  
  1397.  
  1398.           char *title            The title of the window
  1399.           char *Menuentry        This string appears in the Add-On menu
  1400.           char *description      Your text for the status line
  1401.           void (*fn)()           An action function associated with the menuitem
  1402.  
  1403.  Returns:  A window handle of void * 
  1404.  
  1405.  Notes:  Use this function to add a window to the Add-On submenu. Currently it 
  1406.      is impossible to create windows dynamically. Therefore it is absolutely 
  1407.      necessary to create all windows on start-up (i.e. in function WCatInit()). 
  1408.      You should save the handle that is returned. It is used for all operations 
  1409.      and should not be altered. The function taken as the last parameter is 
  1410.      called whenever the associated menuitem is selected. The intuitive action 
  1411.      is to show a window (see example below) - but it is not necessary to do 
  1412.      so. You can also ignore the window handle returned by WCatBegWindow and do 
  1413.      some some other action when a menu item is selected. 
  1414.  
  1415.  Example: 
  1416.  
  1417.  
  1418.           void  *win=0;                   /* window handle */
  1419.  
  1420.           void show()
  1421.             {
  1422.             WCatShowWindow(win);
  1423.             WCatShowWindow
  1424.             }
  1425.  
  1426.           BOOL _Export _System WCatInit()
  1427.             {
  1428.             ...
  1429.             win=WCatBegWindow("My title",
  1430.                               "My menu entry",
  1431.                               "A very long description",
  1432.                               show);
  1433.             ...
  1434.             return TRUE;
  1435.             }
  1436.  
  1437.  
  1438. ΓòÉΓòÉΓòÉ 11.3.2. WCatClearWindow ΓòÉΓòÉΓòÉ
  1439.  
  1440.  Prototype: 
  1441.  
  1442.  
  1443.           void _System WCatClearWindow(void *win);
  1444.  
  1445.  Parameters: 
  1446.  
  1447.  
  1448.           void *win              The window handle (returned by WinBegWindow)
  1449.  
  1450.  Returns:  no return value 
  1451.  
  1452.  Notes:  This function simply clears the window. 
  1453.  
  1454.  Example: 
  1455.  
  1456.  
  1457.           void  *win;                    /* window handle */
  1458.            ...
  1459.           if (WindowShouldBeCleared==TRUE)
  1460.              WCatClearWindow(win);
  1461.  
  1462.  
  1463. ΓòÉΓòÉΓòÉ 11.3.3. WCatShowWindow ΓòÉΓòÉΓòÉ
  1464.  
  1465.  Prototype: 
  1466.  
  1467.  
  1468.           void _System WCatShowWindow(void *win);
  1469.  
  1470.  Parameters: 
  1471.  
  1472.  
  1473.           void *win              The window handle (returned by WinBegWindow)
  1474.  
  1475.  Returns:  no return value 
  1476.  
  1477.  Notes:  Use this function to show the window. Nothing happens if the window is 
  1478.      already visible. 
  1479.  
  1480.  Example: 
  1481.  
  1482.  
  1483.           void  *win;                    /* window handle */
  1484.            ...
  1485.           void show()
  1486.             {
  1487.             WCatShowWindow(win);
  1488.             }
  1489.  
  1490.  
  1491. ΓòÉΓòÉΓòÉ 11.3.4. WCatAddLine ΓòÉΓòÉΓòÉ
  1492.  
  1493.  Prototype: 
  1494.  
  1495.  
  1496.           void _System WCatAddLine(void *win, char *text);
  1497.  
  1498.  Parameters: 
  1499.  
  1500.  
  1501.           void *win              The window handle (returned by WinBegWindow)
  1502.           char *text             A string that contains one line (excluding \n).
  1503.                                  Try to use strings with less than 200 chars.
  1504.  
  1505.  Returns:  no return value 
  1506.  
  1507.  Notes:  This function adds a line containing text to the window associated 
  1508.      with the window handle win This function does not scroll the contents of 
  1509.      the window. (cf. WCatAddLineAndScroll) 
  1510.  
  1511.  Example: 
  1512.  
  1513.  
  1514.           void  *win;                     /* window handle */
  1515.            ...
  1516.           WCatAddLine(win, "This is a a new line");
  1517.  
  1518.  
  1519. ΓòÉΓòÉΓòÉ 11.3.5. WCatAddLineAndScroll ΓòÉΓòÉΓòÉ
  1520.  
  1521.  Prototype: 
  1522.  
  1523.  
  1524.           void _System WCatAddLineAndScroll(void *win, char *text);
  1525.  
  1526.  Parameters: 
  1527.  
  1528.  
  1529.           void *win              The window handle (returned by WinBegWindow)
  1530.           char *text             A string that contains one line (excluding \n).
  1531.                                  Try to use strings with less than 200 chars.
  1532.  
  1533.  Returns:  no return value 
  1534.  
  1535.  Notes:  This function adds a line containing text to the window associated 
  1536.      with the window handle win This function does scroll the contents of the 
  1537.      window if necessary (cf. WCatAddLine) 
  1538.  
  1539.  Example: 
  1540.  
  1541.  
  1542.           void  *win;                     /* window handle */
  1543.             ...
  1544.           WCatAddLineAndScroll(win, "This is a a new line");
  1545.  
  1546.  
  1547. ΓòÉΓòÉΓòÉ 11.3.6. WCatChangeLine ΓòÉΓòÉΓòÉ
  1548.  
  1549.  Prototype: 
  1550.  
  1551.  
  1552.           void _System WCatChangeLine(void *win, int line, char *text);
  1553.  
  1554.  Parameters: 
  1555.  
  1556.  
  1557.           void *win              The window handle (returned by WinBegWindow)
  1558.           int  line              The line in the window (0-based)
  1559.           char *text             The new text string that replaces the old line
  1560.                                  (no \n)
  1561.  
  1562.  Returns:  no return value 
  1563.  
  1564.  Notes:  This function can be used to replace a specific line. 
  1565.  
  1566.  Example: 
  1567.  
  1568.  
  1569.           void  *win;                     /* window handle */
  1570.            ...
  1571.           /* Change the first line */
  1572.           WCatChangeLine(win, 0, "This is the new first line");
  1573.  
  1574.  
  1575. ΓòÉΓòÉΓòÉ 11.3.7. WCatPrintf ΓòÉΓòÉΓòÉ
  1576.  
  1577.  Prototype: 
  1578.  
  1579.  
  1580.           void _System WCatPrintf(void *win, char *format, ...);
  1581.  
  1582.  Parameters: 
  1583.  
  1584.  
  1585.           void *win              The window handle (returned by WinBegWindow)
  1586.           rest                   usage exactly like printf
  1587.  
  1588.  Returns:  no return value 
  1589.  
  1590.  Notes:  This is a very easy interface to print strings in a window. The line 
  1591.      is added as the last line without scrolling. 
  1592.  
  1593.  Example: 
  1594.  
  1595.  
  1596.           void  *win=0;                   /* window handle */
  1597.           char  *name1="Bill";
  1598.           char  *name2="Lou";
  1599.            ...
  1600.           WCatPrintf(win, "Hi %s, my name is %s", name1, name2);
  1601.  
  1602.  
  1603. ΓòÉΓòÉΓòÉ 11.3.8. WCatChangePrintf ΓòÉΓòÉΓòÉ
  1604.  
  1605.  Prototype: 
  1606.  
  1607.  
  1608.           void _System WCatChangePrintf(void *win, int line, char *format, ...);
  1609.  
  1610.  Parameters: 
  1611.  
  1612.  
  1613.           void *win              The window handle (returned by WinBegWindow)
  1614.           int  line              The line to be changed (0-based)
  1615.           rest                   usage exactly like printf
  1616.  
  1617.  Returns:  no return value 
  1618.  
  1619.  Notes:  This is a very easy interface to print strings in a window. A specific 
  1620.      line is replaced. 
  1621.  
  1622.  Example: 
  1623.  
  1624.  
  1625.           void  *win=0;                   /* window handle */
  1626.           char  *name1="Bill";
  1627.           char  *name2="Jim";
  1628.            ...
  1629.           WCatChangePrintf(win, 0, "Hi %s, my name is %s", name1, name2);
  1630.  
  1631.  
  1632. ΓòÉΓòÉΓòÉ 11.3.9. WCatQueryPID ΓòÉΓòÉΓòÉ
  1633.  
  1634.  Prototype: 
  1635.  
  1636.  
  1637.           unsigned long _System WCatQueryPID();
  1638.  
  1639.  Parameters: 
  1640.  
  1641.  
  1642.           no parameters
  1643.  
  1644.  Returns:  returns the process id of the currently selected process. A value of 
  1645.      -1 indicates that no process but some other module is selected. 
  1646.  
  1647.  Notes:  Use this function to query what process is currently selected in the 
  1648.      process/module list. 
  1649.  
  1650.  Example: 
  1651.  
  1652.  
  1653.           ULONG pid;
  1654.  
  1655.           pid=WCatQueryPID();
  1656.  
  1657.  
  1658. ΓòÉΓòÉΓòÉ 11.3.10. WCatQueryHandle ΓòÉΓòÉΓòÉ
  1659.  
  1660.  Prototype: 
  1661.  
  1662.  
  1663.           unsigned long _System WCatQueryHandle();
  1664.  
  1665.  Parameters: 
  1666.  
  1667.  
  1668.           no parameters
  1669.  
  1670.  Returns:  returns the handle of the currently selected process or module. 
  1671.  
  1672.  Notes:  Use this function to query what process or module is currently 
  1673.      selected in the process/module list. 
  1674.  
  1675.  Example: 
  1676.  
  1677.  
  1678.           ULONG handle;
  1679.           char name[50];
  1680.  
  1681.           pid=WCatQueryHandle();
  1682.           if (DosQueryModuleName(handle, sizeof(name), name))
  1683.              {
  1684.              if (stricmp(name, "watchcat.exe")==0)
  1685.                 WCatPrintf("it's me! it's me!"
  1686.              }
  1687.  
  1688.  
  1689. ΓòÉΓòÉΓòÉ 11.3.11. WCatSetTitle ΓòÉΓòÉΓòÉ
  1690.  
  1691.  Prototype: 
  1692.  
  1693.  
  1694.           void _System WCatSetTitle(void *win, int i, char *text);
  1695.  
  1696.  Parameters: 
  1697.  
  1698.  
  1699.           void *win              The window handle (returned by WinBegWindow)
  1700.           int  line              Title line (0 based)
  1701.           char *text             Headline
  1702.  
  1703.  Returns:  no return values 
  1704.  
  1705.  Notes:  Use this function to generate a headline for a window. 
  1706.  
  1707.  Example: 
  1708.  
  1709.  
  1710.           void  *win;                     /* window handle */
  1711.            ...
  1712.           WCatSetTitle(win, 0, "PID   remark");
  1713.           WCatSetTitle(win, 1, "ΓöÇΓöÇΓöÇ   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ");
  1714.  
  1715.  
  1716. ΓòÉΓòÉΓòÉ 11.3.12. WCatPopup ΓòÉΓòÉΓòÉ
  1717.  
  1718.  Prototype: 
  1719.  
  1720.  
  1721.           void _System WCatPopup();
  1722.  
  1723.  Parameters: 
  1724.  
  1725.  
  1726.           no parameters
  1727.  
  1728.  Returns:  no return values 
  1729.  
  1730.  Notes:  Forces WatchCat to be popped up.  Do not use this function from 
  1731.      another program! 
  1732.  
  1733.  Example: 
  1734.  
  1735.  
  1736.           WCatPopup();
  1737.  
  1738.  
  1739. ΓòÉΓòÉΓòÉ 12. Trouble shooting ΓòÉΓòÉΓòÉ
  1740.  
  1741. Trouble shooting 
  1742.  
  1743. If you have any problems with WatchCat please refer to this section. If your 
  1744. problem cannot be solved, have a look at the WatchCat-WWW-home page or send us 
  1745. a mail. 
  1746.  
  1747.  
  1748. ΓòÉΓòÉΓòÉ 12.1. Pressing Ctrl-Alt-W does not result in any action ΓòÉΓòÉΓòÉ
  1749.  
  1750. Make sure that you included watchcat.sys in your CONFIG.SYS. 
  1751.  
  1752. Make sure that WatchCat is running DETACHED (include it with RUN= in your 
  1753. CONFIG.SYS). If WatchCat is running visibly, it is NOT detached. 
  1754.  
  1755. Try to find out if other ways to activate WatchCat work. 
  1756.  
  1757.  
  1758. ΓòÉΓòÉΓòÉ 12.2. My mouse is killed after activation ΓòÉΓòÉΓòÉ
  1759.  
  1760. Run WatchCat with the parameter nomouse 
  1761.  
  1762.  
  1763. ΓòÉΓòÉΓòÉ 12.3. The screen is black and I cannot see anything ΓòÉΓòÉΓòÉ
  1764.  
  1765. Run WatchCat with the parameter nofade 
  1766.  
  1767.  
  1768. ΓòÉΓòÉΓòÉ 12.4. I cannot kill my program ΓòÉΓòÉΓòÉ
  1769.  
  1770. There are some programs WatchCat cannot kill. Sorry. Since OS/2 does not 
  1771. provide a way to shoot'em down, we can't help. 
  1772.  
  1773. Sometimes it is impossible to get a stable system again. In this case it is 
  1774. necessary to boot via Ctrl-Alt-Del. Please note that this key sequence does 
  1775. close all files. Do not press the reset key. 
  1776.  
  1777. You may also open a shell by pressing Space and do some house-keeping before 
  1778. rebooting. 
  1779.  
  1780.  
  1781. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1782.  
  1783. WatchCat uses the FeelX API to switch quick marking to the alternate Marking 
  1784. mode if it is started in a window. So it is still possible to use cut and 
  1785. paste, but you must press a shift key (per default: just shift, this can be 
  1786. selected in the FeelX notebook). Other windows are not affected. 
  1787.  
  1788. In the current version of FeelX (1.1a) it is not possible to turn off the 
  1789. context menu. It is recommended to use Alt-F10 to get the context window in a 
  1790. windowed version of WatchCat. 
  1791.  
  1792.  
  1793. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1794.  
  1795. A single-pole double-throw (SPDT) looks like this: In this situation pins 2 and 
  1796. 3 are connected. 
  1797.  
  1798.  
  1799. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1800.  
  1801. A switch like the PC's turbo button looks like this: In this situation both 
  1802. pins are connected if the button is pressed. For WatchCat, a switch that 
  1803. remains in the state in which it is set is recommended. 
  1804.  
  1805.  
  1806. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1807.  
  1808. DeskMan/2 (Gregory Czaja; Development Technologies, Inc.) is a powerful tool 
  1809. for the Workplace Shell. One of its (endless) features allows the user to save 
  1810. and restore Workplace Shell objects. 
  1811.  
  1812.  
  1813. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1814.  
  1815. The CONFIG.SYS file is the OS/2 configuration file. It can be found in the root 
  1816. directory of the OS/2 boot drive. 
  1817.  
  1818.  
  1819. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1820.  
  1821. A key-sequence that is used to perform some action (instead of typing 
  1822. characters and words) is called a hotkey. The default hotkey to activate 
  1823. WatchCat is Ctrl-Alt-W. 
  1824.  
  1825.  
  1826. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1827.  
  1828. The environment variable LIBPATH is set in the CONFIG.SYS file. You must add 
  1829. the WatchCat path here to ensure that all DLL's are found. Especially the WPS 
  1830. object cannot work without this variable. 
  1831.  
  1832.  
  1833. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1834.  
  1835. The environment variable PATH is set in the CONFIG.SYS file. You must add the 
  1836. WatchCat path here to ensure that the program can be start from any command 
  1837. shell. 
  1838.  
  1839.  
  1840. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1841.  
  1842. This statement is used to integrate a device driver into OS/2. WatchCat uses a 
  1843. device driver to be independent from usual message processing (which might be 
  1844. blocked). Add the line DEVICE=x:\path\watchcat.sys (parameters) anywhere in 
  1845. your CONFIG.SYS file. 
  1846.  
  1847.  
  1848. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1849.  
  1850. The environment variable LIBPATH is set in the CONFIG.SYS file. You must add 
  1851. the WatchCat path here to ensure that the help file is found whenever you type 
  1852. view watchcat  in a command shell. 
  1853.  
  1854.  
  1855. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1856.  
  1857. This statement is responsible for detaching a program on start-up. Please add 
  1858. the line RUN=x:\path\watchcat anywhere in your CONFIG.SYS. In contrast to START 
  1859. this command detaches the process. Do NOT use START. 
  1860.  
  1861.  
  1862. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1863.  
  1864. The PM (Presentation Manager) is responsible for the graphical appearance of 
  1865. OS/2. The PM manages windows, buttons, ... The best known PM-application is the 
  1866. WPS (Workplace Shell). 
  1867.  
  1868.  
  1869. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1870.  
  1871. A device driver is responsible for the communication between applications and 
  1872. hardware. An application cannot (should not) access hardware directly. There 
  1873. are 3 types of device drivers. 
  1874.  
  1875.   1. A base device driver is loaded even before other device drivers. It is 
  1876.      very, very low level. E.G. AHA154X.ADD is driver that is responsible for 
  1877.      the Adaptec SCSI Adapter. This driver is added to the CONFIG.SYS via 
  1878.      BASEDEV= 
  1879.  
  1880.   2. A physical device driver (the "normal" driver) is added to the config.sys 
  1881.      via DEVICE It is loaded after the base device drivers and before any 
  1882.      application. Physical device drivers are always 16-Bit. 
  1883.  
  1884.   3. A virtual device driver is a special device driver. It is used by a 
  1885.      virtual DOS machine to virtualize hardware. DOS programs can access 
  1886.      hardware directly which is not allowed with OS/2 (s.a.). Therefore the 
  1887.      hardware is "simulated" by the virtual device driver. The virtual device 
  1888.      driver can communicate with a physical device driver. from the technical 
  1889.      point of view a virtual device driver is a 32-Bit DLL. 
  1890.  
  1891.  WatchCat uses a physical device driver (watchcat.sys) to by-pass the standard 
  1892.  key processing. Therefore WatchCat notices its hotkey even when the PM is 
  1893.  blocked. 
  1894.  
  1895.  
  1896. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1897.  
  1898. The OS/2 Presentation-Manager is an event-driven system. All events in the 
  1899. system (e.g. moving the mouse or pressing a key) are converted into a message 
  1900. an put into a global message queue. The applications take the messages from 
  1901. this queue. This is done in a serial way. The second program cannot get a 
  1902. message while the first application is still working on its message. Therefore 
  1903. one application can stop the whole system. 
  1904.  
  1905.  
  1906. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1907.  
  1908. The WPS (Workplace Shell) is the graphical user interface of OS/2. An WPS 
  1909. object is simply an icon (and its functionality). All icons on your desktop are 
  1910. WPS objects. 
  1911.  
  1912. Objects with the same functionality are grouped to a WPS class. Mostly one 
  1913. class has many objects. For example there are many folder objects which are 
  1914. instances of the folder class. Some classes only have one object (e.g. 
  1915. WatchCat). 
  1916.  
  1917. Classes that are not part of OS/2 (e.g. WatchCat) must be registered (just to 
  1918. tell the system that they want to be used...). This task is done by the 
  1919. installation program. 
  1920.  
  1921.  
  1922. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1923.  
  1924. A dynamic link library (DLL) is program code that is linked to an application 
  1925. when the program is started. A DLL can be shared by many different processes. 
  1926.  
  1927. There are two ways of using a DLL: 
  1928.  
  1929.   1. load-time dynamic linking: The DLL is loaded when the program is started. 
  1930.      The DLL is not part of the application, but there are references to the 
  1931.      DLL in the program. 
  1932.  
  1933.   2. run-time dynamic linking: The DLL is loaded via an explicit command in the 
  1934.      application. The program does not have any references to the DLL. The DLL 
  1935.      is not loaded until the explicit call. 
  1936.  
  1937.  WatchCat can display all run-time linked DLL in the Library window. ALL DLL 
  1938.  will we displayed in main window (if "all modules" is selected).