home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Multimedia 1995 October
/
IMM1095.ISO
/
share
/
os2
/
watchcat
/
watchcat.inf
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1994-12-18
|
188KB
|
1,938 lines
ΓòÉΓòÉΓòÉ 1. Title Page ΓòÉΓòÉΓòÉ
Welcome to WatchCat 2.0
- The Guardian Angel of OS/2 -
ΓòÉΓòÉΓòÉ 2. Overview ΓòÉΓòÉΓòÉ
WatchCat is a program to recover OS/2 2.x and OS/2 3.x from some kinds of hang
by killing applications. It works as follows:
WatchCat may be useful to any OS/2 user in the following situations:
o The Presentation Manager (PM) is blocked. Due to the single message queue of
OS/2 a single ill-behaved PM program might block all PM programs in the
system and prevent any program from getting user input. Therefore it is
impossible to end the corrupt task or to save data in other programs. You can
press Ctrl-ESC but this does not help in all situations. Due to the
Full-Screen nature of WatchCat those ill-behaved programs can be killed from
within WatchCat.
There are several reasons why the PM might hang:
- An ill-behaved PM program
- An ill-behaved Windows program in a Win-OS/2 session
- Erroneous Workplace Shell objects.
Even though OS/2 has become much more stable with Version 3, there are still
situations where the PM is blocked:
o The PM user-interface is blocked because of a system-modal dialog box that
cannot be closed.
o User input is impossible because of a high priority process or a process that
is doing a lot of swapping.
WatchCat might also be interesting to programmers in the following situations:
o Display all PStat-info about modules, processes, threads, etc. WatchCat
periodically updates all this information. It is quick and easy to use
without any PM overhead.
o You may use it in special cases for debugging: Send your debugging text to
WatchCat to avoid any additional PM message passing. This may be useful in
some PM and WPS applications.
o WatchCat can be extended with its own modules via a DLL and a documented API.
In contrast to WatchCat 1.x you don't need special hardware to use WatchCat
2.0 You can still use any switches you built for v1.x, but you can also simply
activate WatchCat by a user-defined hotkey (default: Ctrl-Alt-W).
WatchCat needs a very small amount of CPU-time. You don't see it and you won't
notice it. But it is there if you need it.
ΓòÉΓòÉΓòÉ 3. Copyright & more ΓòÉΓòÉΓòÉ
Copyright & more
Please read this section carefully before using or distributing WatchCat.
ΓòÉΓòÉΓòÉ 3.1. Copyright ΓòÉΓòÉΓòÉ
WatchCat and all software supplied in the WatchCat package is
(c) Copyright 1993, 1994 by Felix von Normann and Thomas Opheys.
All rights reserved.
You are invited to distribute WatchCat in the sense of Freeware/Shareware. This
implies that you can sell only the copying service. You cannot sell the program
itself without explicit permission. Repackaging the WatchCat archive is not
allowed.
WatchCat is free for all kinds of personal usage. Please contact the authors
for information about (direct and indirect) commercial usage (this includes
using WatchCat at work).
Demo versions, evaluation copies or limited Shareware versions do not exist.
ΓòÉΓòÉΓòÉ 3.2. Disclaimer ΓòÉΓòÉΓòÉ
We do not claim to provide error-free software or software that will meet all
your requirements.
This software is supplied with no warranty, neither expressed nor implied. We
disclaim all warranties for any damages included but not limited to incidental
or consequential damage caused directly or indirectly by this software.
All software is provided AS IS. You may use this program only at your own risk.
WatchCat must not be used in states that do not allow the above limitation of
liability.
ΓòÉΓòÉΓòÉ 3.3. The authors ΓòÉΓòÉΓòÉ
WatchCat was written by:
For more information refer to section How to contact the authors.
ΓòÉΓòÉΓòÉ 3.4. Credits ΓòÉΓòÉΓòÉ
Credits go to Will Rose (cwr@crash.cts.com) who was so kind as to read our docs
and correct grammar, style, syntax, typos and all the other things where a
German can do harm to the English language.
Thanks to Jeremy Mathers (pynq@quads.uchicago.edu), Benjamin Stein
(benno@liva.in-berlin.de), Mike Morrell (morrellm@seq.oit.osshe.edu), Nicole
Greiber (greiber@wrcs2.urz.uni-wuppertal.de), Erich Schulman
(acme@use.usit.net), Andrew DeNardo
(LRSSPFLD!CHAMPAIGN!DENARDO@lrsmail.attmail.com), Sven Kiesow
(kiesow@kirk.fmi.uni-passau.de) and many others for their contributions to
WatchCat.
THANKS A LOT!
ΓòÉΓòÉΓòÉ 3.5. Payment for WatchCat? ΓòÉΓòÉΓòÉ
Is there a need to pay for WatchCat?
This program can be used absolutely free, if:
o You already sent us mail, a letter or a postcard for WatchCat 1.x.
o You helped us to improve WatchCat.
o You need WatchCat for your personal use only.
o You're a member of Team OS/2 and recommend OS/2 and WatchCat to a lot of
people.
Please contact us for detailed information, if one of the following conditions
hold:
1. You are using WatchCat in your office.
2. You are a professional programmer
3. You are millionaire
All others are invited to send us email or a postcard. All kinds of comments
are very welcome. We are looking forward to your comment.
Thanks in advance
Felix & Thomas
ΓòÉΓòÉΓòÉ 4. How to contact the authors ΓòÉΓòÉΓòÉ
How to contact the authors
There are several ways to contact us.
o By regular mail: To receive further information or to write us a postcard or
letter write to one (or both) of the following addresses:
Felix von Normann Thomas Opheys
Innstr. 82 Franz-Stockbauer-Weg 1 / 88
94036 Passau 94032 Passau
Germany Germany
o Send an email to:
watchcat@uni-duisburg.de (for all comments about WatchCat)
normann@kirk.fmi.uni-passau.de (to write a mail to Felix)
opheys@kirk.fmi.uni-passau.de (to write a mail to Thomas)
o World Wide Web: We are currently working on a WWW homepage for WatchCat.
You need a WWW-Browser (if you use OS/2, please note that this program is
not part of the OS/2 Warp Bonus Pack, but available freely to all OS/2
users). Select URL http://www.uni-passau.de/~normann/watchcat.html
Currently we have links to:
- The online documentation in HTML format (for WWW).
- The online documentation for TeX.
- A link to Hobbes (where you can get the latest WatchCat package).
- Some pages with the latest information about WatchCat. Frequently asked
questions that are not part of this documentation will be collected
there.
ΓòÉΓòÉΓòÉ 5. WatchCat for the impatient user ΓòÉΓòÉΓòÉ
WatchCat for the impatient user
After uninstalling previous versions of WatchCat, copy all files into a single,
separate directory (e.g. ramdisk, or final WatchCat directory).
Now run the install program (install.exe) and follow the instructions,
especially select:
o Easy installation: This options installs WatchCat in your CONFIG.SYS and
creates a WPS object on your Workplace Shell. The only way to activate
WatchCat is the keyboard.
o Advanced installation: Select this option if you want to use a switch for
LPT, COM, etc, or you need to have more than one device. Use this option
also if you do not want to install the WPS object.
Now installation is ready. The CONFIG.SYS is updated. Reboot. Activate
WatchCat (default: Ctrl-Alt-W). Enjoy!
ΓòÉΓòÉΓòÉ 6. Installation and configuration of WatchCat ΓòÉΓòÉΓòÉ
Installation and Configuration
(If you don't won't to read much text refer to WatchCat for the impatient
user.).
Before installing WatchCat 2.0 you must deinstall WatchCat 1.x (if present).
We recommend using the installation program to copy the files and update the
CONFIG.SYS.
Of course, you can also install WatchCat manually. This requires you to include
a device driver and a RUN= statement in the CONFIG.SYS file.
To get information about which files are needed/not needed, please refer to the
section Understanding the files in the WatchCat package.).
ΓòÉΓòÉΓòÉ 6.1. Installation procedure ΓòÉΓòÉΓòÉ
Topics:
Deinstalling WatchCat 1.x
The install program
Installing The WPS object
Installing WatchCat manually
Uninstalling WatchCat 2.0
ΓòÉΓòÉΓòÉ 6.1.1. Deinstalling WatchCat 1.x ΓòÉΓòÉΓòÉ
Note: YOU MUST DELETE AND DEREGISTER THE WATCHCAT 1.0 OBJECT FROM THE
WORKPLACE SHELL. DO NOT FORGET THIS STEP!!!!
If you installed the WPS object of WatchCat 1.x (the stupid cat on your
Workplace Shell) please remove it BEFORE installing the new version. First
delete the icon by using its context menu or dropping it on the shredder.
DON'T FORGET THIS STEP!
Then you can deregister the WPS class. Either run the old OLD WatchCat 1.x,
once with once with parameter deregisterWPS and once with the parameter
clearini:
[C:\watchcat] watchcat deregisterWPS
...
[C:\watchcat] watchcat clearini
...
If you already deleted WatchCat 1.x you can use the install program of
WatchCat 2.0 to deregister it. Just type:
[C:\watchcat] install deregisterWPS
Now you are ready to install WatchCat 2.0.
ΓòÉΓòÉΓòÉ 6.1.2. Using the install program ΓòÉΓòÉΓòÉ
It is very important to uninstall WatchCat 1.x first.
It is assumed that you unpacked all files in a certain directory. You can put
all the files into the final WatchCat directory or tell the installation
program to do so.
Then start install from the command line.
You first have to choose between the easy installation and the advanced
installation. The easy installation procedure will install WatchCat in your
CONFIG.SYS, with as many features enabled as possible and default settings. The
default to activate WatchCat is to use Ctrl-Alt-W.
If you want to activate WatchCat with any other input control you must choose
the advanced installation. Please answer all questions, then in the end the
install program will add WatchCat to the CONFIG.SYS.
ΓòÉΓòÉΓòÉ 6.1.3. Installing the WPS object ΓòÉΓòÉΓòÉ
A separate installation step for the Workplace Shell object is not required any
longer. That is all managed by the install program.
ΓòÉΓòÉΓòÉ 6.1.4. Installing WatchCat manually ΓòÉΓòÉΓòÉ
WatchCat has the following architecture:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé WatchCat Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé physical Γöé
Γöé device driver Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé Hardware Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
Therefore you must add the statements below to your CONFIG.SYS. Substitute
x:\path\ with the correct path and do not copy the italic text. (You can place
these lines somewhere in your CONFIG.SYS).
DEVICE=x:\path\watchcat.sys   insert at the top of CONFIG.SYS to install
the device driver
RUN=x:\path\watchcat.exe   to detach the main program
In addition you need to update some variables: (WatchCat will probably not work
if you do not set these variables correctly).
PATH=...;x:\path\;   let OS/2 find watchcat.exe
LIBPATH=...;x:\path\;   let OS/2 find the DLL.
BOOKSHELF=...;x:\path\;   let OS/2 find this documentation
If you do not want to activate WatchCat with the default hotkey Ctrl-Alt-W, it
is necessary to add a parameter to the device driver. The parameters are listed
in the next session.
ΓòÉΓòÉΓòÉ 6.1.5. Uninstalling WatchCat 2.0 ΓòÉΓòÉΓòÉ
Currently we don't have a deinstall program. You must deinstall WatchCat
manually. To do so please follow these steps.
1. kill WatchCat (This can be done by WatchCat)
2. delete the WPS object (if there)
3. run install deregisterWPS from the commandline
4. remove WatchCat specific entries from your CONFIG.SYS ( RUN=...,
DEVICE=..., LIBPATH, PATH, BOOKSHELF )
5. reboot (!!!)
6. delete all files
ΓòÉΓòÉΓòÉ 6.2. Understanding the files in the WatchCat package ΓòÉΓòÉΓòÉ
The WatchCat package contains the following files:
File task deleteable?
ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
readme.txt small overview yes, after reading
install.exe install and deinstall WatchCat yes, after install
save to diskette
watchcat.sys device driver no
WatchCat.exe The program. Executable on OS/2 2.11 and Warp \ delete
WarpCat.exe The program. Executable on Warp only. / one
It is recommended to use this file if you have
installed Warp. Copying and renaming is managed
by the install program
wpcat.dll Workplace Shell object if you have no WPS object
watchcat.inf This documentation if you don't need doc
wcatwin.dll Window calls, FeelX calls. if you don't need
a) window titles
b) FeelX alt. marking
wcatdeb.dl_ rename to wcatdeb.dll to use API if you're not a programmer
wcat_api.zip unpack to program WatchCat if you're not a programmer
ΓòÉΓòÉΓòÉ 6.3. Parameters supported by the device driver ΓòÉΓòÉΓòÉ
Topics:
General syntax
<device>
<mask>
<hardware>
summary
Converting WCat 1.x options
ΓòÉΓòÉΓòÉ <hidden> General syntax ΓòÉΓòÉΓòÉ
DEVICE = ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ WATCHCAT.SYS ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇ
ΓööΓöÇ <path> ΓöÇΓöÿ Γöé Γö£ΓöÇ <option> ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
Γöé ΓööΓöÇ <activation> ΓöÇΓöÿ Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
<option> : ΓöÇΓöÇΓö¼ΓöÇ /Q ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
Γö£ΓöÇ /nomouse ΓöÇΓöñ
Γö£ΓöÇ /nopm ΓöÇΓöÇΓöÇΓöÇΓöñ
Γö£ΓöÇ /mono ΓöÇΓöÇΓöÇΓöÇΓöñ
Γö£ΓöÇ /nofade ΓöÇΓöÇΓöñ
ΓööΓöÇ /nodll ΓöÇΓöÇΓöÇΓöÿ
<activation> : ΓöÇΓöÇΓöÇΓöÇ <device> ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
ΓööΓöÇ : ΓöÇΓöÇ <mask> ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓööΓöÇ <hardware> ΓöÇΓöÿ
The actual values are described in the following sections.
ΓòÉΓòÉΓòÉ 6.3.1. <device> ΓòÉΓòÉΓòÉ
This part is to specify what kind of device you're using.
name description activation mechanism(s) default bit mask default hardware
ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
KEYB keyboard (key/key combination) Ctrl-Alt-W KEYB (Keyboard)
GAME game port (joystick or switch) any joystick button GAME (Game Port)
COM1 serial port 1 (switch) DCD,RI,DSR or CTS line COM (serial)
COM2 serial port 2 (switch) as above as above
COM3 serial port 3 (switch) as above as above
COM4 serial port 4 (switch) as above as above
LPT1 parallel port 1 (switch) BUSY,ACK,PEND,SEL,ERROR LPT (parallel)
LPT2 parallel port 2 (switch) as above as above
XXXX user device (any input) any bit of the port USER (user device)
ΓòÉΓòÉΓòÉ 6.3.2. <mask> ΓòÉΓòÉΓòÉ
Defines which input lines/port bits of the given device may be used to accept a
WatchCat activation. Note that the mask byte must be hexadecimal, and exactly
two characters long. Example: "F0" (upper four bits will be used).
For certain devices, there are aliases for common bit masks:
dev:mask description
ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
GAME:JA Joystick A, any button (J1 also works)
GAME:JB Joystick B, any button (J2 also works)
GAME:JA1 Joystick A, button 1
GAME:JA2 Joystick A, button 2
GAME:JB1 Joystick B, button 1
GAME:JB2 Joystick B, button 2
COMx:DCD COMx, Data Carrier Detect line
COMx:RI COMx, Ring Indicator line
COMx:DSR COMx, Data Set Ready line
COMx:CTS COMx, Clear To Send line
LPTx:BUSY LPTx, BUSY line (BSY also works)
LPTx:ACK LPTx, ACK (Acknowledge) line
LPTx:PEND LPTx, Paper End line
LPTx:SEL LPTx, Selected line
LPTx:ERR LPTx, Error line (ERROR also works)
xxxx:ALL all bits of the device
For the KEYB device, a bit mask isn't useful. You can specify a make-code of a
key instead; but normally, you use one of the following key aliases: F10, F11,
F12, A, B, C, ..., X, Y, Z
In addition, you can use CTRL, ALT or SHIFT or any combination of two of these
three keys with the activation key:
S-<key> SHIFT+<key>
C-<key> CTRL+<key>
A-<key> ALT+<key>
CA-<key> CTRL+ALT+<key>
CS-<key> CTRL+SHIFT+<key>
AC-<key> ALT+CTRL+<key>
AS-<key> ALT+SHIFT+<key>
SC-<key> SHIFT+CTRL+<key>
SA-<key> SHIFT+ALT+<key>
Examples:
parameter to activate WatchCat, press
ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
KEYB:F12 CTRL+ALT+W
KEYB:S-F11 SHIFT+F11
KEYB:CA-C CTRL+ALT+C
You should not use F10 or the A...Z keys without at least CTRL and/or
ALT because some programs might need these keys.
Note: Depending on your keyboard hardware it might not be possible to
press several keys simultaneously.
ΓòÉΓòÉΓòÉ 6.3.3. <hardware> ΓòÉΓòÉΓòÉ
Define which hardware type the device is. The following names for hardware
types are available:
name hardware type
ΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
KEYB Keyboard
GAME Game Port
COM serial COM Port
LPT parallel LPT Port
USER user device
For all standard device names like LPT1, KEYB, COM2, GAME, ... <hardware> is
determined automatically. Only when <hardware> is a port address, do you have
to tell the device driver what kind of hardware is to be expected at this port
address.
KEYB - Keyboard
The keyboard can be used to activate WatchCat. Btw. this also works
when the keyboard seems to be "dead" or if a PM session doesn't
respond to the keyboard. Currently, you can use F10, F11, F12 or A..Z
keys together with any combination of one or two shift keys
(CTRL,ALT,SHIFT).
The defaults for KEYB are: 0060:CA-W:KEYB, that is: The keyboard read
data port address hex 60 is used. CTRL+ALT+W is the default key to
activate WatchCat. Internally, the port address of a KEYB device is
discarded. So anything like XXXX:...:KEYB is useless because XXXX
will be replaced with 0060. This isn't a problem (or are there
keyboard controllers with port address<>hex 60?)
If one or two additional keys (SHIFT, CTRL or ALT) are to be pressed,
WatchCat looks for the make codes of all two (three) keys and
activates if at least one break code of these keys is recognized.
Internally, the port address of a KEYB/PKEY device is discarded. So
anything like XXXX:...:KEYB is useless because XXXX will be replaced
with 0060. This isn't a problem (or are there keyboard controllers
with port address<>hex 60?)
GAME - Game Port
A joystick or a special connector on a game port can be used to
activate WatchCat.
The defaults for GAME are: 0201:F0:GAME, that is: The game port read
data address hex 201 is used. A standard game port supports max. two
joysticks with two buttons each. Bit mask hex F0 means that any of
the four buttons may activate WatchCat. The meanings of the bits are:
bit mask description
ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
0-3 -- X/Y positions; don't use them (confuses WatchCat)
4 10 Joystick A, button 1
5 20 Joystick A, button 2
6 40 Joystick B, button 1
7 80 Joystick B, button 2
COM - Serial Port
A serial COMx port can be used to activate WatchCat, in conjunction
with a special connector/switch.
The defaults for COM are: <base>:F0:COM, that is: <base> is the COMx
port's base port address:
port base port For a COM port with a different base port
ΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ address XXXX, use XXXX:F0:COM
COM1 03F8
COM2 02F8
COM3 03E8
COM4 02E8
WatchCat sets the lower two bits of the COM port's MODEM CONTROL
Register to 1. This register has the address of BASE+4. Setting these
bits raises the COMx output lines RTS and DTR to +12V, providing +12V
for the connector/switch as a logical high source.
WatchCat inputs from the MODEM STATUS REGISTER which has the port
address of BASE+6. Only the upper four bits are significant here,
hence the bit mask hex F0. The meanings of the bits are:
bit mask description
ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
0-3 -- toggle bits; don't use them (confuses WatchCat)
4 10 CTS (Clear To Send) line
5 20 DSR (Data Set Ready) line
6 40 RI (Ring Indicator) line
7 80 DCD (Data Carrier Detect) line
LPT - Parallel Port
A parallel LPTx port can be used to activate WatchCat, in conjunction
with a special connector/switch.
The defaults for LPT are: <base>:F8:LPT, that is: <base> is the LPTx
port's base port address:
port base port For a LPT port with a different base port
ΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ address XXXX, use XXXX:F8:LPT
LPT1 0378
LPT2 0278
WatchCat sets all eight bits of the parallel port's DATA OUT
register, which can be found at the device's base port address. This
outputs eight logical high lines which can be used to drive some
electronics or provide a logical true source (+5V).
WatchCat reads from the STATUS IN REGISTER which has the port address
of BASE+1. Only the upper five bits are significant here, hence the
bit mask hex F8. The meanings of the bits are:
bit mask description
ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
0-2 -- reserved; don't use them (may confuse WatchCat)
3 08 ERR (Error) line
4 10 SEL (Selected) line
5 20 PEND (Paper End) line
6 40 ACK (Acknowledge) line
7 80 BUSY (Busy) line
USER - User Device
Any device with a port address that reflects the electrical high/low
state of a switch or other input mechanism can be used to activate
WatchCat.
The defaults for USER are: XXXX:FF:USER, that is: The port address
XXXX is given by you. Mask hex FF enables all bits of the device's
input byte. The meanings of the bits depend on the kind of device.
Remark: GAME is equivalent to 0201:F0:USER
Example: If you have a non-standard COM5 serial device at port
address hex 3D8, use DEVICE=xxx\WATCHCAT.SYS 03D8:ALL:COM
ΓòÉΓòÉΓòÉ 6.3.4. Summary ΓòÉΓòÉΓòÉ
You need one parameter for each device that you want to use to activate
WatchCat. Each parameter has the form: x or x:y or x:y:z.
Examples:
parameter(s) activate WatchCat with...
ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
KEYB GAME CTRL+ALT+W key or any joystick button
KEYB:CA-W CTRL+ALT+W key combination
KEYB KEYB:F11 F11 or CTRL+ALT+W key
GAME:JA2 button 2 of joystick A
LPT2:BUSY BUSY line of LPT2
LPT1 LPT2 any input line of LPT1 and LPT2
COM1 COM2 COM3 COM4 any input line of any COM port
03D8:DCD:COM Data Carrier Detect line of a
non-standard COM port at port
address hex 3D8
01B1:ALL:USER any input line of port 1B of a
8255 chip with base address 01B0
ΓòÉΓòÉΓòÉ 6.3.5. Converting WatchCat 1.x options ΓòÉΓòÉΓòÉ
The following table compares all WatchCat 1.x switches and the new switches.
old parameter new parameter parameter for
ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
/1 LPT1 watchcat.sys
/2 LPT2 watchcat.sys
/I=P,B P:B:hw-type watchcat.sys
/G GAME watchcat.sys
/GA GAME:ALL watchcat.sys
/C1 COM1 watchcat.sys
/C2 COM2 watchcat.sys
/C3 COM3 watchcat.sys
/C4 COM4 watchcat.sys
/Bx dev:mask watchcat.sys
/T not supported any longer
/A menu(Options/Options...) (program)
/P menu(Options/Options) (program)
/D menu(Options/Options) (program)
/M /NOCOLOR watchcat.sys or
watchcat.exe
menu(Options/Options) (program)
/S:x menu(Options/Options) (program)
/on /off /toggle WPS object (context menu) WPS object (right mouse button)
exit not supported any longer
shadow not supported any longer
registerWPS installation program
deregisterWPS deregisterWPS installation program
clearini (automatically)
ΓòÉΓòÉΓòÉ 6.4. How to build a connector ΓòÉΓòÉΓòÉ
You don't have to build a connector. WatchCat now supports the keyboard too. If
you do not want to use the keyboard, you can also use a switch for the parallel
port or the serial port. Another way of activating WatchCat is to use a
joystick.
ΓòÉΓòÉΓòÉ 6.4.1. Connecting with the parallel port ΓòÉΓòÉΓòÉ
It's so simple... Just go out and buy a 25-pin male SUB-D connector that fits
to your parallel port, and a single-pole double-throw (SPDT) switch. The
switch looks like this: In the position shown pins 2 and 3 are connected.
Connect the following pins:
switch connector DB-25
1 <- 2 (DATA 0 signal, output) used as logical HIGH
2 -> 11 (BUSY signal, input) used to input the state
3 <- 19 (GROUND) used as logical LOW
The following picture gives an overview how to connect for these situations:
You might also want to use another kind of switch: one that simply opens and
closes one connection. It's just like the one that is used as a Turbo Button in
your computer case, i.e. if you don't use your Turbo Button you can use it as
the activation switch for WatchCat. Get a switch that stays in the position in
which you put it.
You can use one like your case's Reset Button, but you might have to hold it
down for a while before WatchCat recognizes it.
You will also need one 4.7 kOhm resistor.
In the picture shown both pins are connected when the button is pressed:
Connect one end of the resistor to pin 11, the other end to pin 19 of the
parallel port connector. Pin 11 is also connected to one pin of the switch. The
other pin of the switch is connected to pin 2 of the parallel port.
The following picture gives an overview of how to connect for these situations:
ΓòÉΓòÉΓòÉ 6.4.2. Connecting with a serial COMx port ΓòÉΓòÉΓòÉ
The same two kinds of connectors (as described in the previous section) can be
used here, too. Get a 25-pin or 9-pin female connector for the serial port.
For the first type of switch (SPDT), connect the following pins:
25-pin 9-pin connector on COMx
1 <- 20 1 <- 4 (+12V DC output) used as logical HIGH
2 -> 22 2 -> 9 (RI) used to input the state
3 <- 7 3 <- 5 (GROUND) used as logical LOW
For the second type of switch: (Turbo Button...) Connect one end of the
resistor to pin 22 (25 pin)/9 (9 pin), the other end to pin 7/5 of the COMx
port connector. Pin 22/9 is also connected to one pin of the switch. The other
pin of the switch is connected to pin 20/4 of the serial port. Note that here
the resistor has to be around 12kOhm.
ΓòÉΓòÉΓòÉ 6.4.3. connecting with game port ΓòÉΓòÉΓòÉ
The same two kinds of connectors can be used here, too. Get a 15-pin male
connector for the game port. For the first type of switch (SPDT), connect the
following pins:
switch connector DB-15 (game port)
1 <- 1 (+5V DC output) used as logical HIGH
2 -> XX (fire button, input) used to input the
state
3 <- 4 (GROUND) used as logical LOW
Where XX equals 2 for joystick A, button 1
7 joystick A, button 2
10 joystick B, button 1 <- recommended
14 joystick B, button 2
For the second type of switch: (Turbo Button...) Connect one end of the
resistor to pin XX, the other end to pin 4 of the game port connector. Pin XX
is also connected to one pin of the switch. The other pin of the switch is
connected to pin 1 of the game port. Note that here the resistor has to be
4,7kOhm.
For the game port, you should know that EVERY time you press (and hold) one
joystick's fire button, WatchCat is activated. We only say this because some
people are said to play games under OS/2... In this case we recommend to use
one of joystick B's buttons as the WatchCat switch (or build a connector on the
game port that uses the corresponding pin). Use the /B switch to specify which
button WatchCat has to watch - thereafter, you can safely play games with the
other joystick.
ΓòÉΓòÉΓòÉ 6.5. Configuring WatchCat ΓòÉΓòÉΓòÉ
Configuring WatchCat has become easier. You can use the program itself to do
so. If you change any settings (sort, etc.) through a menu point, this
parameter is changed until the next start of WatchCat only.
If you want to change a parameter persistently (over boot time) chose Options
... from the Options menu.
This window looks similar to this:
Γòö[Γûá]ΓòÉ[Options]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
ΓòæStart-up windows: Γòæ
Γòæ [ ] Proc-info [x] Threads [x] Libraries Γòæ
Γòæ [ ] Semaphores [ ] Shared Mem Γòæ
Γòæ ( ) Modules () Processes ( ) PM Γòæ
Γòæ Γòæ
ΓòæSort: Γòæ
Γòæ Modules: () type ( ) name ( ) pid Γòæ
Γòæ Processes: ( ) type ( ) name () pid Γòæ
Γòæ PM-Processes: ( ) type () name ( ) pid Γòæ
Γòæ Γòæ
ΓòæOther: Γòæ
Γòæ path: ( ) full () names only Γòæ
Γòæ lines: () 25 ( ) 43 ( ) 50 Γòæ
Γòæ color: () color ( ) mono Γòæ
Γòæ Γòæ
Γòæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γòæ
Γòæ Γöé Save Γöé Γöé Change Γöé Γöé Cancel Γöé Γòæ
Γòæ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γòæ
Γòæ Γòæ
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
Change anything that requires to be changed... If you select Save all Settings
will be saved and restored the next time WatchCat is started. If you select
Change all system parameters are changed, but they are not saved. Last but not
least if you select Cancel the window is closed without any action.
The parameters are saved in a file called watchcat.ini This file is
not an OS/2-PM standard ini-file. It is not required that this file
exists. If the file does not exist WatchCat uses the default values.
If you have any problems because you changed parameters the wrong
way, just delete this file. (It is placed in the directory where the
device driver is installed).
As you can see there are three major sections:
Start-up windows: You can select between one and three windows that should be
opened automatically on program start. You can also decide whether the default
view of the main window is a process list, a complete module list or just the
PM-programs.
Sort:For any of these three types you can select a sort criterion. You can
sort by module name, module type or process id.
In the last section you can decide whether all module names should be
displayed with full path, how many lines you want to have and whether you need
color or not.
ΓòÉΓòÉΓòÉ 6.6. Using the WPS object ΓòÉΓòÉΓòÉ
This chapter describes how to use the Workplace Shell object:
The context menu
The "Option" page
The "Hotkey" page
The "Window" page
Note: The WatchCat object allows the user to activate WatchCat and to
change some global settings. WatchCat is started by the CONFIG.SYS.
Therefore there is no need to put this object into the start-up
folder.
Note: In contrast to WatchCat 1.x Settings like sort, ... can be done
from the WatchCat program (not the object).
ΓòÉΓòÉΓòÉ 6.6.1. The context menu ΓòÉΓòÉΓòÉ
The context menu of WatchCat looks like this:
There are two views for WatchCat. Select them by Open. Either you can activate
a detached version of WatchCat (which is started by the CONFIG.SYS) or you can
start a new windowed instance on the Workplace Shell.
If you need help, click on WatchCat in the Help menu. This will load this
online documentation.
The last menu point allows the user to temporary switch WatchCat on/off. The
current state is represented by the icon (you try it...).
ΓòÉΓòÉΓòÉ 6.6.2. The "Options" page ΓòÉΓòÉΓòÉ
The Options page looks like this:
This page allows the user to switch on or off a device specified in the
CONFIG.SYS. In the case above the driver watchcat.sys was called with the
parameters KEYB and LPT2. Therefore you can turn on or off activating WatchCat
by the keyboard or a switch for LPT2.
All other devices (in this case Game, COM) are not selectable (disabled).
Note: Per default (if you selected easy installation) only the
keyboard can be used to activated WatchCat. Therefore only the
keyboard can be turned on or off. All other items are not selectable
(disabled).
ΓòÉΓòÉΓòÉ 6.6.3. The "Hotkey" page ΓòÉΓòÉΓòÉ
The Hotkey page looks like this:
This page does not appear if you have not selected hotkeys in the CONFIG.SYS.
You can easily change the hotkey here (e.g. if you have compatibility problems
with other programs).
ΓòÉΓòÉΓòÉ 6.6.4. The "Window" page ΓòÉΓòÉΓòÉ
The Window page looks like this:
Select a default view here. A double-click on the WatchCat object will either
activate a detached version of WatchCat or will start a windowed version
depending on your choice here. This is the only boot persistent choice. (It
will also be saved by DeskMan/2).
In the above case a double-click on the WatchCat item would start a second
instance of WatchCat in a window.
ΓòÉΓòÉΓòÉ 7. Activating WatchCat ΓòÉΓòÉΓòÉ
Activating WatchCat
The way you activate WatchCat depends on your configuration. If you have chosen
the default configuration simply press Ctrl-Alt-W to activate the program.
Note: If you do not want to use a hotkey you can also build a simple
switch for the parallel port or the serial port, or activate WatchCat
by a joystick
The monitor is switched to text mode and WatchCat appears. Use the cursor keys
or the mouse to select a process or module.
If you want to kill an application, press k. To switch to a process (if
possible), press Enter. To open a shell, press space. To get a context menu,
press the right mouse button. You can also select items from the main menu.
ΓòÉΓòÉΓòÉ 8. Understanding WatchCat ΓòÉΓòÉΓòÉ
Understanding WatchCat
The following sections explain how to use WatchCat and how to navigate through
the supplied information.
ΓòÉΓòÉΓòÉ 8.1. Using WatchCat ΓòÉΓòÉΓòÉ
The main screen of WatchCat looks like this:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé Info Action Options Add-On Help (Press ESC to exit) Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓöîΓöÇ[Process list]ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ[]ΓöÉΓòö[Γûá]ΓòÉ[Dynamic Link Libraries]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
ΓöéMOD TYPE PID CPU NAME ΓöéΓòæmod DLL(16) CHESSAI.DLL Γòæ
ΓöéΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöéΓòæmod DLL(32) DOSCALL1.DLL Γòæ
Γöéprg detach 2 TEST.EXE Γòæmod DLL(32) PMDRAG.DLL Γòæ
Γöéprg detach 3 BATSERV.EXE ΓûôΓòæmod DLL(32) PMGPI.DLL Γòæ
Γöéprg detach 4 NMPBIND.EXE ΓûæΓòæmod DLL(32) PMMERGE.DLL Γòæ
Γöéprg FS 5 6% PMSHELL.EXE ΓûæΓòæmod DLL(32) PMSHAPI.DLL Γòæ
Γöéprg FS 7 HARDERR.EXE ΓûæΓòæmod DLL(32) PMWIN.DLL Γòæ
Γöéprg PM 8 PMSPOOL.EXE ΓûæΓòæ Γòæ
Γöéprg PM 9 PMSHELL.EXE (FeelXΓûæΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
Γöéprg PM A POPUPPM.EXE (popupΓûæΓöî[Γûá]ΓöÇ[Threads]ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ[]ΓöÉ
Γöéprg PM B ITSNOW.EXE (ItsNowΓûæΓöé ID PRIO STATUS BLOCKID Γöé
Γöéprg PM D FEELX.EXE (FeelX) ΓûæΓöéΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Γöé
Γöéprg PM 12 68% OS2CHESS.EXE (OS/2ΓûæΓöé 1 200 blocked fdfb0748 Γöé
Γöéprg PM 15 PULSE.EXE ΓûæΓöé 2 200 ready 40053d6 Γöé
Γöéprg Vio 16 CMD.EXE (WatchCat.ΓûæΓöé 3 200 blocked 40053dc Γöé
Γöéprg Vio 19 CMD.EXE (T.EXE) ΓûæΓöé Γöé
Γöéprg Vio 1A CMD.EXE ΓûæΓöé Γöé
Γöéprg Vio 1B 25% WATCHCAT.EXE ΓûæΓöé Γöé
Γöéprg PM 1E VIEWDOC.EXE (InforΓöé Γöé
ΓööΓûôΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓöÿΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
WatchCat (c)'94 by Felix von Normann, Thomas Opheys, Passau, Germany
The usage of WatchCat is very similar to PM. You can use either the mouse or
the keyboard to navigate through the windows. The main menu is at the top of
the screen. A status line is visible at the bottom. The of the screen rest is
filled with information windows. You can have between 1 and 4 windows visible
at the same.
The main difference between the way to use WatchCat and the way to use (native)
PM is that you activate a window by just moving the mouse onto it. You don't
have to click explicitly on it. (BTW: This is the way of activating windows
when you're using FeelX ...)
The active window has a double border, while all other windows have a single
border.
The main idea is that there is one "main" window (this is the process or module
window). All other windows show informations related to one item of the main
window.
As a consequence, the process window cannot be closed. You can select a process
/ module by using the mouse or keyboard. The information in any other (most)
windows depend on this selection! For example the Library window does not list
all the libraries in the system but only those that are used by the current
selected process.
Note: All windows have a selection bar but only the selection in the
process / module list has a meaning. The other windows have a
selection bar only for easier usage.
To learn how to use WatchCat, just play around.
Note: It is not dangerous to play around with WatchCat. All you need
to know is that "K" kills a program "Enter" switches to the selected
program if possible "ESC" leaves the WatchCat screen (but does not
end WatchCat).
ΓòÉΓòÉΓòÉ 8.2. The main menu ΓòÉΓòÉΓòÉ
The first menu item (called Info) can be used to select what kind of
information is displayed. The topmost menu item affects the information in the
main window. You can view either all modules in the system (that are Device
Drivers, DLL, Dos and OS/2 programs, ...) or only the processes (in fact
programs) or just the PM-programs (mostly responsible for system hangups).
The following items in the menu Info open new windows with additional
information about the currently selected process.
The Action menu allows special actions. You can open a shell with the first
menu point. The second menu point forces WatchCat to redraw the entire screen
and update the information. You can kill a process with the third menu item.
Sending WM_QUIT does make sense only for PM programs. Sending WM_QUIT
terminates the PM program, but not with as much brutality as killing the
application. If this menu item does not work, you must kill the application.
The Options menu lets you change a lot of settings. Please note that it is
necessary to select options via the menu item Options ... to save them
permanently.
The Add-On menu contents depend on the WatchCat special function DLL. You can
easily write your own WatchCat module. Any window created with an external DLL
is listed here.
If you forget something about keys and usage, select Help to get help.
Note: WatchCat does not support overlaying windows. This restriction
implies that the windows are not updated while a menu is visible.
ΓòÉΓòÉΓòÉ 8.3. The "Process list" window ΓòÉΓòÉΓòÉ
This is the most important window. This window lists all processes or all
modules currently loaded / running in the system.
ΓòöΓòÉ[Process list]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
ΓòæMOD TYPE PID CPU NAME Γòæ
ΓòæΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ Γòæ
Γòæprg PM 12 83% OS2CHESS.EXE (OS/2
Γòæprg PM 15 PULSE.EXE Γûæ
Γòæprg Vio 16 CMD.EXE (WatchCat.Γûæ
Γòæprg Vio 19 CMD.EXE (T.EXE) Γûô
Γòæprg Vio 1A CMD.EXE (CMD.EXE) Γûæ
Γòæprg PM 1E VIEWDOC.EXE (Infor
ΓòÜΓûôΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓò¥
The MOD column gives the type of the module: prg means program, while mod
means any other module.
The TYPE column gives more information about the module type. Currently the
following types are supported: BaseDev - base device driver, Dev - physical
device driver, VDev - virtual device driver, IFS - installable file system,
DLL - Dynamic link library, Font - font, VDM - virtual DOS machine, detach -
detached process, FS - full screen OS/2 program, Vio - windowed program, PM -
presentation manager program.
The PID column represents the process id of the module in hexadecimal notion.
This id is available only for processes.
The CPU column gives information about the relative CPU usage by all
processes. This is not an exact value, but an estimation. Please note that
this value is relative. It may look like WatchCat is very CPU-intensive. This
is not true. If WatchCat is the only thing running it is trivial that it alone
uses the CPU. Try to run pulse and you'll see that pulse will get much more
CPU time than WatchCat itself.
The Name column displays the name and optionally the path of the module.
Since DOS is more or less only a program loader it cannot provide
information about processes, etc. Of course the virtual DOS machines
inherit this problem. Therefore an OS/2 process like WatchCat can get
the information there is concerning a virtual DOS machine. But it is
impossible (except with a lot of technical tricks) to get information
about the programs running in the DOS session. To provide more
information about the DOS session than just "VDM" WatchCat tries to
extract the window title of the VDM. This might be a hint about what
program is running in the VDM.
Getting the window name is not a CPU-trivial task for WatchCat.
Therefore this information is updated very, very rarely.
ΓòÉΓòÉΓòÉ 8.4. The Process info - window ΓòÉΓòÉΓòÉ
This window provides a little more detailed information about a process. We
believe this is self-explanatory.
Γòö[Γûá]ΓòÉ[Process details]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
Γòæpath: G:\OS2\ Γòæ
Γòæname: CMD.EXE Γòæ
ΓòæProcess id: 19 Γòæ
ΓòæParent pid: 5 Γòæ
ΓòæSession: 27 Γòæ
Γòæhandle: 0448 Γòæ
ΓòæStatus: running Γòæ
Γòætype: Windowable (32 bit) Γòæ
Γòæ Γòæ
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
ΓòÉΓòÉΓòÉ 8.5. The Threads window ΓòÉΓòÉΓòÉ
Γòö[Γûá]ΓòÉ[Threads]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
Γòæ ID PRIO STATUS BLOCKID Γòæ
ΓòæΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Γòæ
Γòæ 1 200 blocked fffe0a4e Γòæ
Γòæ 2 300 running fff7c2db Γòæ
Γòæ 3 200 blocked 62800ee Γòæ
Γòæ 4 301 blocked fffe0a6e Γòæ
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
The ID column does lists the thread ID.
The PRIO column shows the priority of a thread. This value is given in hex.
The priorities have the following meaning:
PRIO Explanation
ΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
1xx low priority
2xx normal priority
4xx foreground server
3xx time critical
The STATUS column gives information about the thread's state. A thread can be
running (but there is only one WatchCat thread running when this info is
displayed...), be blocked (then the BLOCKID column gives additional
information), a thread can also be ready (this means that the thread is not
waiting but will be running as soon as it gets CPU time). If a thread is
frozen, then the application is loaded with the preload-feature of OS/2.
ΓòÉΓòÉΓòÉ 8.6. The Libraries window ΓòÉΓòÉΓòÉ
Γòö[Γûá]ΓòÉ[Dynamic Link Libraries]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
Γòæmod DLL(32) DOSCALL1.DLL Γòæ
Γòæmod DLL(32) KBDCALLS.DLL Γòæ
Γòæmod DLL(32) MOUCALLS.DLL Γòæ
Γòæmod DLL(32) MSG.DLL Γòæ
Γòæmod DLL(32) NLS.DLL Γòæ
Γòæmod DLL(32) VIOCALLS.DLL Γòæ
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
The library window just lists all the dynamic link libraries (DLL) used by
this process. Please note that this list is directly associated with the
currently selected process.
ΓòÉΓòÉΓòÉ 8.7. The Semaphores window ΓòÉΓòÉΓòÉ
Γòö[Γûá]ΓòÉ[Semaphores]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
ΓòæNAME INDEX REF REQ FLΓòæ
ΓòæΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓòæ
Γòæ\SEM\LKNED001.SEM 53AC 1 0 0
Γòæ\SEM\LKNED002.SEM 53B2 1 0 0 Γûæ
Γòæ\SEM\LKNED003.SEM 53B8 1 0 0 Γûæ
Γòæ\SEM\PMHDERR.SEM 53CA 1 0 2 Γûæ
Γòæ\SEM\SMGCONT.SEM 53BE 2 0 0 Γûæ
Γòæ\SEM\VIOPOPUP 539A 19 0 0 Γûô
Γòæ\SEM\VIOPRTSC 53A0 16 0 8
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
This window has the least information value. It lists all 16-Bit semaphores
that are used by the current selected process.
ΓòÉΓòÉΓòÉ 8.8. Shared Memory window ΓòÉΓòÉΓòÉ
Γòö[Γûá]ΓòÉ[Shared Memory]ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ[]Γòù
ΓòæNAME SIZE SEL Γòæ
ΓòæΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇ Γòæ
ΓòæPMDRAG.MEM : 4096B 960FΓòæ
ΓòæPMGLOBAL.MEM : 4096B 961FΓòæ
ΓòæPULSECTL : 48K 893FΓòæ
Γòæ Γòæ
Γòæ Γòæ
Γòæ Γòæ
Γòæ Γòæ
ΓòÜΓûôΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓò¥
This window lists all shared memory segments used by a process. It also shows
the size of the memory block, the Selector and the handle.
ΓòÉΓòÉΓòÉ 9. Running WatchCat from the command prompt ΓòÉΓòÉΓòÉ
WatchCat & prompt
Don't forget that you can also start WatchCat from the command prompt. We
distinguish between two modes:
o If you detach WatchCat (i.e. type detach watchcat at the command prompt),
WatchCat is activated by hotkey. This is the mechanism when WatchCat is
added to the CONFIG.SYS.
o If you start WatchCat like any other program (by typing "WatchCat" at the
command prompt) it does not switch to Full-Screen, and it provides all
information immediately. You don't have a hotkey for this WatchCat session.
Note: You can have one detached and one or more started (windowed)
WatchCat instances at the same time.
ΓòÉΓòÉΓòÉ 10. Using external WatchCat modules ΓòÉΓòÉΓòÉ
Using external WatchCat modules.
On start-up, WatchCat looks for DLLs in its directory and tries to find out
whether they are modules for WatchCat or not. If a DLL is a WatchCat module it
is integrated into WatchCat as if it were part of the program.
The advantages are:
o You can delete all unneeded modules
o You can write your own modules
o It is easier to extend WatchCat
Currently there is only one module supplied (and many ideas for new modules).
This module allows a programmer to print debugging text in a WatchCat window.
ΓòÉΓòÉΓòÉ 10.1. Using the wcprintf module ΓòÉΓòÉΓòÉ
This module allows the user to print text in a WatchCat window.
All you have to do is to write into the pipe \PIPE\WATCHCAT. This can also be
done from DOS sessions.
Example: type read.me >\PIPE\WATCHCAT
If you are writing a PM program and you have trouble with the message
processing, these routines might be useful because they have no additional
message overhead. Examples are the following situations:
o You want to hook the message queue. Sending a text string to another window
increases (potentially) the message processing.
o You need information about all mouse movement or mouse clicks in your
application. Obviously moving the mouse to another window to display
debugging infos would result in "wrong" messages.
o Your application hangs up the PM and you don't know why. You can print
debugging strings, but you are not sure whether all debugging strings are
displayed.
WatchCat can help because it can be activated without key and mouse (by
hardware switch or your program) and it is full-screen. Therefore it works
even if the PM is hung.
If you want to use this module simply include wcapi.h. Then #define WCDEBUG. A
call to wcprintf(char *format, ...) pipes its output into a WatchCat window.
If WCDEBUG is not set and optimization is turned on, the function call is
optimized away.
You can activate WatchCat from the program by calling WatchCat().
You must link your application with wcatdeb.lib. It is necessary that
wcatdeb.dll is in the same directory as watchcat.exe
ΓòÉΓòÉΓòÉ 11. Interfacing WatchCat ΓòÉΓòÉΓòÉ
Interfacing WatchCat
There are two ways of interfacing to WatchCat. First, your program can activate
WatchCat and second, you can write your own WatchCat module and write directly
into a WatchCat window.
The API is still under development. If one of the functions does not work as
expected or you need a function not provided now please contact us. (All
functions were developed with IBM C/Set++; they are portabel and partly tested
for Borland, EMX, Watcom; cf. testmod.c)
ΓòÉΓòÉΓòÉ 11.1. Activating WatchCat from a program ΓòÉΓòÉΓòÉ
There are two ways to activate WatchCat from your own program:
o Use the following code sequence:
#include INCL_DOSSEMAPHORES
...
#include <os2.h>
...
HEV hev;
...
if (!DosOpenEventSem((PSZ)"\\Sem32\\WatchCat", &hev))
{
DosPostEventSem(hev);
DosCloseEventSem(hev);
}
o Link with wcatdeb.lib, and use the following code sequence:
#include <wcapi.h>
...
WatchCat();
ΓòÉΓòÉΓòÉ 11.2. Writing your own DLL ΓòÉΓòÉΓòÉ
Writing your own WatchCat DLL is not difficult. WatchCat searches its own
directory for any WatchCat DLL.
A WatchCat DLL is a dynamic link library that contains at least the functions
WCatRegister and WCatInit. More specifically, WatchCat does the following: Call
WCatRegister(), call WCatInit(), start WCatThread() as a thread, if present.
To make it easier, you have to compile dllbase.c and link it with your
application. Then you have access to all functions with prototypes in wcapi.h.
dllbase contains WCatRegister and initializes the "system".
Your own written module should contain at least WCatInit. Use this function to
create all windows you need (use WCatBegWindow). You can also insert headlines
(use WCatSetTitle). Don't call WCatBegWindow later.
The WCatThread function is started as a normal-priority thread. You can use all
functions here too.
WatchCat is event-driven. If an event occurs (mouse, keyboard, ...) WatchCat
calls a specific DLL-function (if present).
Your function is called with a void* parameter. This is a window handle
identical to one allocated with WCatBegWindow. It is your job to find out if
this handle belongs to a window which message you want to intercept. Your
function can return either TRUE (non-zero) or FALSE. TRUE indicates that the
parent is not called, so the default action is not done. On the other hand
FALSE indicates that the default action has to be done.
Currently the following functions are supported:
int WCatKey(void *win_handle, int scan, int ascii, int shift)
win_handle window handle
scan Make-Code
ascii Ascii-Code or 0
shift 0=no shift, 2 = Ctrl, 4 = Alt
int WCatB1Click(void *win_handle, int x, int y)
win_handle window handle
x x-coordinate (relative to window)
y y-coordinate (relative to window)
int WCatSelected(void *win_handle, int i)
win_handle window handle
i line (0-based)
int WCatInformIfProcessChanged(void *win_handle, int i)
win_handle window handle
i line which is selected now
WCatTimer()
called every second
WCatThread()
called as a thread
Please note that your DLL can provide the above functions. They are called by
WatchCat. Do not call the functions yourself. On the other hand all above
functions are optional. You do not need to provide any of them.
Example: See the testmod.c file for an example.
Writing a DLL for WatchCat is not very difficult, but not trivial
either. Please read the documentation carefully to see if any library
initialization is required. When one of the above functions is called
you can assume that this is done in the WatchCat process context.
Note that your DLL may be called from several WatchCat instances (The
example ignores this problem). In the WatchCat context you can call
all API functions except WCatBegWindow. If the function is called
from outside the WatchCat context, you are not allowed to call this
API.
ΓòÉΓòÉΓòÉ 11.3. API Reference ΓòÉΓòÉΓòÉ
The following reference describes all functions that can be used in your DLL.
Note: To use these functions it is necessary to compile dllbase.c and
link it to your DLL.
Note: These functions can only be used in the WatchCat-context. Never
call these functions from another program or a DLL used by another
program. This would definitely result in a protection violation.
ΓòÉΓòÉΓòÉ 11.3.1. WCatBegWindow ΓòÉΓòÉΓòÉ
Prototype:
void * _System WCatBegWindow(char *title, char *Menuentry,
char *description, void (*fn)());
Parameters:
char *title The title of the window
char *Menuentry This string appears in the Add-On menu
char *description Your text for the status line
void (*fn)() An action function associated with the menuitem
Returns: A window handle of void *
Notes: Use this function to add a window to the Add-On submenu. Currently it
is impossible to create windows dynamically. Therefore it is absolutely
necessary to create all windows on start-up (i.e. in function WCatInit()).
You should save the handle that is returned. It is used for all operations
and should not be altered. The function taken as the last parameter is
called whenever the associated menuitem is selected. The intuitive action
is to show a window (see example below) - but it is not necessary to do
so. You can also ignore the window handle returned by WCatBegWindow and do
some some other action when a menu item is selected.
Example:
void *win=0; /* window handle */
void show()
{
WCatShowWindow(win);
WCatShowWindow
}
BOOL _Export _System WCatInit()
{
...
win=WCatBegWindow("My title",
"My menu entry",
"A very long description",
show);
...
return TRUE;
}
ΓòÉΓòÉΓòÉ 11.3.2. WCatClearWindow ΓòÉΓòÉΓòÉ
Prototype:
void _System WCatClearWindow(void *win);
Parameters:
void *win The window handle (returned by WinBegWindow)
Returns: no return value
Notes: This function simply clears the window.
Example:
void *win; /* window handle */
...
if (WindowShouldBeCleared==TRUE)
WCatClearWindow(win);
ΓòÉΓòÉΓòÉ 11.3.3. WCatShowWindow ΓòÉΓòÉΓòÉ
Prototype:
void _System WCatShowWindow(void *win);
Parameters:
void *win The window handle (returned by WinBegWindow)
Returns: no return value
Notes: Use this function to show the window. Nothing happens if the window is
already visible.
Example:
void *win; /* window handle */
...
void show()
{
WCatShowWindow(win);
}
ΓòÉΓòÉΓòÉ 11.3.4. WCatAddLine ΓòÉΓòÉΓòÉ
Prototype:
void _System WCatAddLine(void *win, char *text);
Parameters:
void *win The window handle (returned by WinBegWindow)
char *text A string that contains one line (excluding \n).
Try to use strings with less than 200 chars.
Returns: no return value
Notes: This function adds a line containing text to the window associated
with the window handle win This function does not scroll the contents of
the window. (cf. WCatAddLineAndScroll)
Example:
void *win; /* window handle */
...
WCatAddLine(win, "This is a a new line");
ΓòÉΓòÉΓòÉ 11.3.5. WCatAddLineAndScroll ΓòÉΓòÉΓòÉ
Prototype:
void _System WCatAddLineAndScroll(void *win, char *text);
Parameters:
void *win The window handle (returned by WinBegWindow)
char *text A string that contains one line (excluding \n).
Try to use strings with less than 200 chars.
Returns: no return value
Notes: This function adds a line containing text to the window associated
with the window handle win This function does scroll the contents of the
window if necessary (cf. WCatAddLine)
Example:
void *win; /* window handle */
...
WCatAddLineAndScroll(win, "This is a a new line");
ΓòÉΓòÉΓòÉ 11.3.6. WCatChangeLine ΓòÉΓòÉΓòÉ
Prototype:
void _System WCatChangeLine(void *win, int line, char *text);
Parameters:
void *win The window handle (returned by WinBegWindow)
int line The line in the window (0-based)
char *text The new text string that replaces the old line
(no \n)
Returns: no return value
Notes: This function can be used to replace a specific line.
Example:
void *win; /* window handle */
...
/* Change the first line */
WCatChangeLine(win, 0, "This is the new first line");
ΓòÉΓòÉΓòÉ 11.3.7. WCatPrintf ΓòÉΓòÉΓòÉ
Prototype:
void _System WCatPrintf(void *win, char *format, ...);
Parameters:
void *win The window handle (returned by WinBegWindow)
rest usage exactly like printf
Returns: no return value
Notes: This is a very easy interface to print strings in a window. The line
is added as the last line without scrolling.
Example:
void *win=0; /* window handle */
char *name1="Bill";
char *name2="Lou";
...
WCatPrintf(win, "Hi %s, my name is %s", name1, name2);
ΓòÉΓòÉΓòÉ 11.3.8. WCatChangePrintf ΓòÉΓòÉΓòÉ
Prototype:
void _System WCatChangePrintf(void *win, int line, char *format, ...);
Parameters:
void *win The window handle (returned by WinBegWindow)
int line The line to be changed (0-based)
rest usage exactly like printf
Returns: no return value
Notes: This is a very easy interface to print strings in a window. A specific
line is replaced.
Example:
void *win=0; /* window handle */
char *name1="Bill";
char *name2="Jim";
...
WCatChangePrintf(win, 0, "Hi %s, my name is %s", name1, name2);
ΓòÉΓòÉΓòÉ 11.3.9. WCatQueryPID ΓòÉΓòÉΓòÉ
Prototype:
unsigned long _System WCatQueryPID();
Parameters:
no parameters
Returns: returns the process id of the currently selected process. A value of
-1 indicates that no process but some other module is selected.
Notes: Use this function to query what process is currently selected in the
process/module list.
Example:
ULONG pid;
pid=WCatQueryPID();
ΓòÉΓòÉΓòÉ 11.3.10. WCatQueryHandle ΓòÉΓòÉΓòÉ
Prototype:
unsigned long _System WCatQueryHandle();
Parameters:
no parameters
Returns: returns the handle of the currently selected process or module.
Notes: Use this function to query what process or module is currently
selected in the process/module list.
Example:
ULONG handle;
char name[50];
pid=WCatQueryHandle();
if (DosQueryModuleName(handle, sizeof(name), name))
{
if (stricmp(name, "watchcat.exe")==0)
WCatPrintf("it's me! it's me!"
}
ΓòÉΓòÉΓòÉ 11.3.11. WCatSetTitle ΓòÉΓòÉΓòÉ
Prototype:
void _System WCatSetTitle(void *win, int i, char *text);
Parameters:
void *win The window handle (returned by WinBegWindow)
int line Title line (0 based)
char *text Headline
Returns: no return values
Notes: Use this function to generate a headline for a window.
Example:
void *win; /* window handle */
...
WCatSetTitle(win, 0, "PID remark");
WCatSetTitle(win, 1, "ΓöÇΓöÇΓöÇ ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ");
ΓòÉΓòÉΓòÉ 11.3.12. WCatPopup ΓòÉΓòÉΓòÉ
Prototype:
void _System WCatPopup();
Parameters:
no parameters
Returns: no return values
Notes: Forces WatchCat to be popped up. Do not use this function from
another program!
Example:
WCatPopup();
ΓòÉΓòÉΓòÉ 12. Trouble shooting ΓòÉΓòÉΓòÉ
Trouble shooting
If you have any problems with WatchCat please refer to this section. If your
problem cannot be solved, have a look at the WatchCat-WWW-home page or send us
a mail.
ΓòÉΓòÉΓòÉ 12.1. Pressing Ctrl-Alt-W does not result in any action ΓòÉΓòÉΓòÉ
Make sure that you included watchcat.sys in your CONFIG.SYS.
Make sure that WatchCat is running DETACHED (include it with RUN= in your
CONFIG.SYS). If WatchCat is running visibly, it is NOT detached.
Try to find out if other ways to activate WatchCat work.
ΓòÉΓòÉΓòÉ 12.2. My mouse is killed after activation ΓòÉΓòÉΓòÉ
Run WatchCat with the parameter nomouse
ΓòÉΓòÉΓòÉ 12.3. The screen is black and I cannot see anything ΓòÉΓòÉΓòÉ
Run WatchCat with the parameter nofade
ΓòÉΓòÉΓòÉ 12.4. I cannot kill my program ΓòÉΓòÉΓòÉ
There are some programs WatchCat cannot kill. Sorry. Since OS/2 does not
provide a way to shoot'em down, we can't help.
Sometimes it is impossible to get a stable system again. In this case it is
necessary to boot via Ctrl-Alt-Del. Please note that this key sequence does
close all files. Do not press the reset key.
You may also open a shell by pressing Space and do some house-keeping before
rebooting.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
WatchCat uses the FeelX API to switch quick marking to the alternate Marking
mode if it is started in a window. So it is still possible to use cut and
paste, but you must press a shift key (per default: just shift, this can be
selected in the FeelX notebook). Other windows are not affected.
In the current version of FeelX (1.1a) it is not possible to turn off the
context menu. It is recommended to use Alt-F10 to get the context window in a
windowed version of WatchCat.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
A single-pole double-throw (SPDT) looks like this: In this situation pins 2 and
3 are connected.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
A switch like the PC's turbo button looks like this: In this situation both
pins are connected if the button is pressed. For WatchCat, a switch that
remains in the state in which it is set is recommended.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
DeskMan/2 (Gregory Czaja; Development Technologies, Inc.) is a powerful tool
for the Workplace Shell. One of its (endless) features allows the user to save
and restore Workplace Shell objects.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
The CONFIG.SYS file is the OS/2 configuration file. It can be found in the root
directory of the OS/2 boot drive.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
A key-sequence that is used to perform some action (instead of typing
characters and words) is called a hotkey. The default hotkey to activate
WatchCat is Ctrl-Alt-W.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
The environment variable LIBPATH is set in the CONFIG.SYS file. You must add
the WatchCat path here to ensure that all DLL's are found. Especially the WPS
object cannot work without this variable.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
The environment variable PATH is set in the CONFIG.SYS file. You must add the
WatchCat path here to ensure that the program can be start from any command
shell.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
This statement is used to integrate a device driver into OS/2. WatchCat uses a
device driver to be independent from usual message processing (which might be
blocked). Add the line DEVICE=x:\path\watchcat.sys (parameters) anywhere in
your CONFIG.SYS file.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
The environment variable LIBPATH is set in the CONFIG.SYS file. You must add
the WatchCat path here to ensure that the help file is found whenever you type
view watchcat in a command shell.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
This statement is responsible for detaching a program on start-up. Please add
the line RUN=x:\path\watchcat anywhere in your CONFIG.SYS. In contrast to START
this command detaches the process. Do NOT use START.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
The PM (Presentation Manager) is responsible for the graphical appearance of
OS/2. The PM manages windows, buttons, ... The best known PM-application is the
WPS (Workplace Shell).
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
A device driver is responsible for the communication between applications and
hardware. An application cannot (should not) access hardware directly. There
are 3 types of device drivers.
1. A base device driver is loaded even before other device drivers. It is
very, very low level. E.G. AHA154X.ADD is driver that is responsible for
the Adaptec SCSI Adapter. This driver is added to the CONFIG.SYS via
BASEDEV=
2. A physical device driver (the "normal" driver) is added to the config.sys
via DEVICE It is loaded after the base device drivers and before any
application. Physical device drivers are always 16-Bit.
3. A virtual device driver is a special device driver. It is used by a
virtual DOS machine to virtualize hardware. DOS programs can access
hardware directly which is not allowed with OS/2 (s.a.). Therefore the
hardware is "simulated" by the virtual device driver. The virtual device
driver can communicate with a physical device driver. from the technical
point of view a virtual device driver is a 32-Bit DLL.
WatchCat uses a physical device driver (watchcat.sys) to by-pass the standard
key processing. Therefore WatchCat notices its hotkey even when the PM is
blocked.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
The OS/2 Presentation-Manager is an event-driven system. All events in the
system (e.g. moving the mouse or pressing a key) are converted into a message
an put into a global message queue. The applications take the messages from
this queue. This is done in a serial way. The second program cannot get a
message while the first application is still working on its message. Therefore
one application can stop the whole system.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
The WPS (Workplace Shell) is the graphical user interface of OS/2. An WPS
object is simply an icon (and its functionality). All icons on your desktop are
WPS objects.
Objects with the same functionality are grouped to a WPS class. Mostly one
class has many objects. For example there are many folder objects which are
instances of the folder class. Some classes only have one object (e.g.
WatchCat).
Classes that are not part of OS/2 (e.g. WatchCat) must be registered (just to
tell the system that they want to be used...). This task is done by the
installation program.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
A dynamic link library (DLL) is program code that is linked to an application
when the program is started. A DLL can be shared by many different processes.
There are two ways of using a DLL:
1. load-time dynamic linking: The DLL is loaded when the program is started.
The DLL is not part of the application, but there are references to the
DLL in the program.
2. run-time dynamic linking: The DLL is loaded via an explicit command in the
application. The program does not have any references to the DLL. The DLL
is not loaded until the explicit call.
WatchCat can display all run-time linked DLL in the Library window. ALL DLL
will we displayed in main window (if "all modules" is selected).