Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9173 → Rev 9174

/programs/develop/cedit/SRC/Timer.ob07
0,0 → 1,85
(*
Copyright 2021 Anton Krotov
 
This file is part of CEdit.
 
CEdit is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
 
CEdit is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with CEdit. If not, see <http://www.gnu.org/licenses/>.
*)
 
MODULE Timer;
 
IMPORT SYSTEM, K := KolibriOS, KOSAPI, Ini;
 
VAR
stack: ARRAY 1024*64 OF INTEGER;
ID*, time, cnt: INTEGER;
paused: BOOLEAN;
 
 
PROCEDURE reset*;
BEGIN
cnt := time;
paused := FALSE
END reset;
 
 
PROCEDURE stop*;
BEGIN
cnt := time;
paused := TRUE
END stop;
 
 
PROCEDURE kill*;
BEGIN
ID := 0;
K.ExitID(ID)
END kill;
 
 
PROCEDURE [stdcall] main (mainTID: INTEGER);
CONST
step = 5;
BEGIN
WHILE TRUE DO
K.Pause(step);
IF KOSAPI.sysfunc3(18, 21, mainTID) = 0 THEN
ID := 0;
K.Exit
END;
IF ~paused THEN
DEC(cnt, step);
IF cnt <= 0 THEN
cnt := time;
IF time > 0 THEN
K.SendIPC(mainTID, ID)
END
END
END
END
END main;
 
 
PROCEDURE create* (mainTID: INTEGER);
BEGIN
time := Ini.blink;
reset;
stack[LEN(stack) - 1] := mainTID;
ID := K.CreateThread(SYSTEM.ADR(main), stack)
END create;
 
 
BEGIN
ID := 0
END Timer.