1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
Multi-Tasker Detection Routines
by David Gibbs
FidoNet: 1:115/439.0
Internet: David.Gibbs@f439.n115.z1.fidonet.org
The following is a set of C routines that will enable a programmer to
detect a mutli-tasking environment and release the time slice when
desired. Currently DESQview, Windows, & OS/2 are the environments
supported.
Routines consist of two functions, two global int variables, one global
structure, and a table of character pointers.
void t_get_os(); This routines detects the operating environment, sets
on the appropriate bits in the t_os_type field, and sets the t_os field
to the dominant environment.
void t_slice(); This routine will release the remainder of the current
tasks time slice in the manner appropriate to the dominant envionment.
The following fields & structures are available...
int t_os_type; is a bit mapped integer that indicates the presence of
various operating envionments. If Bit 0 is on, DOS is present, Bit 1 =
OS2, bit 2 = DESQview, bit 3 = Windows standard, bit 4 = Windows 386
Enh. These bits can be tested by using logical operations with the
symbolic constants is_DOS, is_OS2, is_DV, is_WINS, and is_WIN3.
int t_os; represents the dominant environment. The dominant envionment
is defined as the multi-tasking system that takes precidence. For
instance, you can run Windows *UNDER* DESQview, but DESQview would be
dominant, the same goes true for OS/2 & Windows. This value can be
tested by comparing to the symbolic constants: DOS, OS2, DV, WINS, and
WIN3.
struct t_os_ver ts_os_ver[]; indicates the versions of the various
environments present. Major & minor versions are found in the
structure members 'maj' and 'min'. The structure is subscripted, so you
can access the version of envionments using the symbolic constants use
in 't_os'.
const char *t_os_name[]; contains the names of the environments
detectable. These too are subscripted and can be accessed using the
symbolic constants above.
A sample program that uses these routines follows:
#include <stdio.h>
#include "tasker.h"
void main() {
get_os();
printf("%s %d.%d detected",t_os_name[t_os],
t_os_ver[t_os].maj,
t_os_ver[t_os].min);
while(!kbhit()) {
printf("Hit a key!\r\n");
t_slice();
}
}
Special thanks go to Geoffery Booher (1:2270/233) for assistance with
Windows & OS/2 detection & Time slicing.
This routine is released to the public as CommentWare - If you use it,
please send me a comment as to what you thought of it... oh yeah, you
might think of giving me credit for the routines.
Also, if you can think of a enhancement or correction, please let me
know. I can be reached at the above mentioned email addresses.
Copyrights: DESQview by Quarterdeck Office Systems
Windows by Microsoft
OS/2 by IBM
TurboC++ by Borland
|