Subversion Repositories Kolibri OS

Rev

Rev 9180 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9180 Rev 9181
Line 21... Line 21...
21
 
21
 
Line 22... Line 22...
22
IMPORT SYSTEM, K := KolibriOS, KOSAPI, Ini;
22
IMPORT SYSTEM, K := KolibriOS, KOSAPI, Ini;
23
 
23
 
24
VAR
24
VAR
25
	stack: ARRAY 1024*64 OF INTEGER;
25
	stack: ARRAY 1024*64 OF INTEGER;
26
	ID*, time, cnt: INTEGER;
-
 
27
	paused: BOOLEAN;
-
 
28
 
-
 
29
 
-
 
30
PROCEDURE reset*;
-
 
31
BEGIN
-
 
32
	cnt := time;
-
 
33
	paused := FALSE
-
 
34
END reset;
-
 
35
 
-
 
36
 
-
 
37
PROCEDURE stop*;
-
 
38
BEGIN
26
	ID*, n*, time, cnt: INTEGER;
39
	cnt := time;
-
 
Line 40... Line 27...
40
	paused := TRUE
27
	enabled: BOOLEAN;
41
END stop;
28
	msg: ARRAY 3 OF INTEGER;
42
 
29
 
43
 
30
 
44
PROCEDURE kill*;
31
PROCEDURE kill*;
Line 45... Line 32...
45
BEGIN
32
BEGIN
46
	ID := 0;
33
	enabled := FALSE;
47
	K.ExitID(ID)
34
	INC(n)
48
END kill;
35
END kill;
-
 
36
 
-
 
37
 
49
 
38
PROCEDURE [stdcall] main (mainTID: INTEGER);
50
 
39
CONST
51
PROCEDURE [stdcall] main (mainTID: INTEGER);
40
	step = 5;
52
CONST
41
BEGIN
53
	step = 5;
42
	msg[0] := ID;
54
BEGIN
43
	msg[1] := 12;
55
	WHILE TRUE DO
44
	WHILE TRUE DO
56
		K.Pause(step);
45
		K.Pause(step);
57
		IF KOSAPI.sysfunc3(18, 21, mainTID) = 0 THEN
46
		IF KOSAPI.sysfunc3(18, 21, mainTID) = 0 THEN
58
			ID := 0;
47
			ID := 0;
59
			K.Exit
48
			K.Exit
60
		END;
49
		END;
61
		IF ~paused THEN
50
		IF enabled THEN
62
			DEC(cnt, step);
51
			DEC(cnt, step);
63
			IF cnt <= 0 THEN
52
			IF cnt <= 0 THEN
Line 64... Line 53...
64
				K.SendIPC(mainTID, ID);
53
				KOSAPI.sysfunc5(60, 2, mainTID, SYSTEM.ADR(msg[0]), msg[1]);
65
				cnt := time
54
				cnt := time
66
			END
55
			END
67
		END
56
		END
-
 
57
	END
-
 
58
END main;
68
	END
59
 
69
END main;
60
 
-
 
61
PROCEDURE create* (mainTID: INTEGER);
-
 
62
BEGIN
-
 
63
	time := Ini.blink;
-
 
64
	cnt := time;
70
 
65
	enabled := TRUE;
Line 71... Line 66...
71
 
66
	IF ID = 0 THEN
72
PROCEDURE create* (mainTID: INTEGER);
67
		stack[LEN(stack) - 1] := mainTID;
-
 
68
		ID := K.CreateThread(SYSTEM.ADR(main), stack)
-
 
69
	ELSE
73
BEGIN
70
		INC(n);
74
	time := Ini.blink;
71
		msg[2] := n