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 |