Subversion Repositories Kolibri OS

Rev

Rev 8762 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. (*
  2.     Copyright 2021 Anton Krotov
  3.  
  4.     This file is part of CEdit.
  5.  
  6.     CEdit is free software: you can redistribute it and/or modify
  7.     it under the terms of the GNU General Public License as published by
  8.     the Free Software Foundation, either version 3 of the License, or
  9.     (at your option) any later version.
  10.  
  11.     CEdit is distributed in the hope that it will be useful,
  12.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.     GNU General Public License for more details.
  15.  
  16.     You should have received a copy of the GNU General Public License
  17.     along with CEdit. If not, see <http://www.gnu.org/licenses/>.
  18. *)
  19.  
  20. MODULE KolibriOS;
  21.  
  22. IMPORT
  23.     KOSAPI, SYSTEM;
  24.  
  25. CONST
  26.     winColor* = 0EEEEEEH;
  27.     fontWidth* = 8;
  28.     fontHeight* = 16;
  29.  
  30.  
  31. PROCEDURE GetCommandLine* (): INTEGER;
  32.     RETURN KOSAPI.GetCommandLine()
  33. END GetCommandLine;
  34.  
  35.  
  36. PROCEDURE GetName* (): INTEGER;
  37.     RETURN KOSAPI.GetName()
  38. END GetName;
  39.  
  40.  
  41. PROCEDURE CreateWindow* (x, y, w, h, color, style, hcolor, hstyle: INTEGER; htext: ARRAY OF CHAR);
  42. BEGIN
  43.     KOSAPI.sysfunc6(0, x * 65536 + w, y * 65536 + h, color + LSL(style, 24), hcolor + LSL(hstyle, 24), SYSTEM.ADR(htext[0]))
  44. END CreateWindow;
  45.  
  46.  
  47. PROCEDURE BeginDraw*;
  48. BEGIN
  49.     KOSAPI.sysfunc2(12, 1)
  50. END BeginDraw;
  51.  
  52.  
  53. PROCEDURE EndDraw*;
  54. BEGIN
  55.     KOSAPI.sysfunc2(12, 2)
  56. END EndDraw;
  57.  
  58.  
  59. PROCEDURE WaitForEvent* (): INTEGER;
  60.     RETURN KOSAPI.sysfunc1(10)
  61. END WaitForEvent;
  62.  
  63.  
  64. PROCEDURE ThreadInfo (offsa, offsb: INTEGER; VAR a, b: INTEGER);
  65. VAR
  66.     buffer: ARRAY 1024 OF BYTE;
  67. BEGIN
  68.     KOSAPI.sysfunc3(9, SYSTEM.ADR(buffer[0]), -1);
  69.     SYSTEM.GET32(SYSTEM.ADR(buffer[0]) + offsa, a);
  70.     SYSTEM.GET32(SYSTEM.ADR(buffer[0]) + offsb, b);
  71. END ThreadInfo;
  72.  
  73.  
  74. PROCEDURE WinSize* (VAR width, height: INTEGER);
  75. BEGIN
  76.     ThreadInfo(42, 46, width, height)
  77. END WinSize;
  78.  
  79.  
  80. PROCEDURE WinPos* (VAR x, y: INTEGER);
  81. BEGIN
  82.     ThreadInfo(34, 38, x, y)
  83. END WinPos;
  84.  
  85.  
  86. PROCEDURE ClientSize* (VAR width, height: INTEGER);
  87. BEGIN
  88.     ThreadInfo(62, 66, width, height)
  89. END ClientSize;
  90.  
  91.  
  92. PROCEDURE ClientPos* (VAR x, y: INTEGER);
  93. BEGIN
  94.     ThreadInfo(54, 58, x, y)
  95. END ClientPos;
  96.  
  97.  
  98. PROCEDURE ThreadID* (): INTEGER;
  99. VAR
  100.     id: INTEGER;
  101. BEGIN
  102.     ThreadInfo(30, 30, id, id)
  103.     RETURN id
  104. END ThreadID;
  105.  
  106.  
  107. PROCEDURE RolledUp* (): BOOLEAN;
  108. VAR
  109.     buffer: ARRAY 1024 OF BYTE;
  110. BEGIN
  111.     KOSAPI.sysfunc3(9, SYSTEM.ADR(buffer[0]), -1)
  112.     RETURN ODD(LSR(buffer[70], 2))
  113. END RolledUp;
  114.  
  115.  
  116. PROCEDURE SetWinSize* (width, height: INTEGER);
  117. BEGIN
  118.     KOSAPI.sysfunc5(67, -1, -1, width, height)
  119. END SetWinSize;
  120.  
  121.  
  122. PROCEDURE DrawText* (x, y, color: INTEGER; text: ARRAY OF WCHAR);
  123. BEGIN
  124.     KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(0A0H, 24), SYSTEM.ADR(text[0]), 0, 0)
  125. END DrawText;
  126.  
  127.  
  128. PROCEDURE DrawText69* (x, y, color: INTEGER; text: ARRAY OF CHAR);
  129. BEGIN
  130.     KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(080H, 24), SYSTEM.ADR(text[0]), 0, 0)
  131. END DrawText69;
  132.  
  133.  
  134. PROCEDURE DrawText866* (x, y, color: INTEGER; text: ARRAY OF CHAR);
  135. BEGIN
  136.     KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(0D0H, 24), SYSTEM.ADR(text[0]), 0, winColor)
  137. END DrawText866;
  138.  
  139.  
  140. PROCEDURE MousePos* (VAR x, y: INTEGER);
  141. VAR
  142.     res: INTEGER;
  143. BEGIN
  144.     res := KOSAPI.sysfunc2(37, 0);
  145.     y := res MOD 65536;
  146.     x := res DIV 65536
  147. END MousePos;
  148.  
  149.  
  150. PROCEDURE CreateButton* (id, Left, Top, Width, Height, Color: INTEGER; Caption: ARRAY OF WCHAR);
  151. VAR
  152.     x, y: INTEGER;
  153. BEGIN
  154.     KOSAPI.sysfunc5(8, LSL(Left, 16) + Width, LSL(Top, 16) + Height, id, Color);
  155.     x := Left + (Width - fontWidth * LENGTH(Caption)) DIV 2;
  156.     y := Top + (Height - fontHeight) DIV 2 + 1;
  157.     DrawText(x, y, 0, Caption)
  158. END CreateButton;
  159.  
  160.  
  161. PROCEDURE DeleteButton* (id: INTEGER);
  162. BEGIN
  163.     KOSAPI.sysfunc5(8, 0, 0, id + 80000000H, 0)
  164. END DeleteButton;
  165.  
  166.  
  167. PROCEDURE GetTickCount* (): INTEGER;
  168.     RETURN KOSAPI.sysfunc2(26, 9)
  169. END GetTickCount;
  170.  
  171.  
  172. PROCEDURE Pause* (time: INTEGER);
  173. BEGIN
  174.     KOSAPI.sysfunc2(5, time)
  175. END Pause;
  176.  
  177.  
  178. PROCEDURE ButtonCode* (): INTEGER;
  179. VAR
  180.     res: INTEGER;
  181. BEGIN
  182.     res := KOSAPI.sysfunc1(17);
  183.     IF res MOD 256 = 0 THEN
  184.         res := LSR(res, 8)
  185.     ELSE
  186.         res := 0
  187.     END
  188.     RETURN res
  189. END ButtonCode;
  190.  
  191.  
  192. PROCEDURE Exit*;
  193. BEGIN
  194.     KOSAPI.sysfunc1(-1)
  195. END Exit;
  196.  
  197.  
  198. PROCEDURE ExitID* (tid: INTEGER);
  199. BEGIN
  200.     KOSAPI.sysfunc3(18, 18, tid)
  201. END ExitID;
  202.  
  203.  
  204. PROCEDURE CreateThread* (proc: INTEGER; stack: ARRAY OF INTEGER): INTEGER;
  205.     RETURN KOSAPI.sysfunc4(51, 1, proc, SYSTEM.ADR(stack[LEN(stack) - 2]))
  206. END CreateThread;
  207.  
  208.  
  209. PROCEDURE Run* (program, param: ARRAY OF CHAR);
  210. TYPE
  211.  
  212.     info_struct = RECORD
  213.         subfunc : INTEGER;
  214.         flags   : INTEGER;
  215.         param   : INTEGER;
  216.         rsrvd1  : INTEGER;
  217.         rsrvd2  : INTEGER;
  218.         fname   : ARRAY 1024 OF CHAR
  219.     END;
  220.  
  221. VAR
  222.     info: info_struct;
  223.  
  224. BEGIN
  225.     info.subfunc := 7;
  226.     info.flags   := 0;
  227.     info.param   := SYSTEM.ADR(param[0]);
  228.     info.rsrvd1  := 0;
  229.     info.rsrvd2  := 0;
  230.     COPY(program, info.fname);
  231.     KOSAPI.sysfunc2(70, SYSTEM.ADR(info))
  232. END Run;
  233.  
  234.  
  235. PROCEDURE DrawRect* (x, y, width, height, color: INTEGER);
  236. BEGIN
  237.     KOSAPI.sysfunc4(13, x*65536 + width, y*65536 + height, color)
  238. END DrawRect;
  239.  
  240.  
  241. PROCEDURE DrawLine* (x1, y1, x2, y2: INTEGER; color: INTEGER);
  242. BEGIN
  243.     KOSAPI.sysfunc4(38, x1*65536 + x2, y1*65536 + y2, color)
  244. END DrawLine;
  245.  
  246.  
  247. PROCEDURE DrawImage* (data, sizeX, sizeY, x, y: INTEGER);
  248. BEGIN
  249.     KOSAPI.sysfunc4(7, data, sizeX*65536 + sizeY, x*65536 + y)
  250. END DrawImage;
  251.  
  252.  
  253. PROCEDURE SetEventsMask* (mask: SET);
  254. BEGIN
  255.     KOSAPI.sysfunc2(40, ORD(mask))
  256. END SetEventsMask;
  257.  
  258.  
  259. PROCEDURE SkinHeight* (): INTEGER;
  260.     RETURN KOSAPI.sysfunc2(48, 4)
  261. END SkinHeight;
  262.  
  263.  
  264. PROCEDURE GetKey* (): INTEGER;
  265.     RETURN KOSAPI.sysfunc1(2)
  266. END GetKey;
  267.  
  268.  
  269. PROCEDURE MouseState* (): SET;
  270.     RETURN BITS(KOSAPI.sysfunc2(37, 3))
  271. END MouseState;
  272.  
  273.  
  274. PROCEDURE Scroll* (): INTEGER;
  275.     RETURN ASR(LSL(KOSAPI.sysfunc2(37, 7), 16), 16)
  276. END Scroll;
  277.  
  278.  
  279. PROCEDURE GetControlKeys* (): SET;
  280.     RETURN BITS(KOSAPI.sysfunc2(66, 3))
  281. END GetControlKeys;
  282.  
  283.  
  284. PROCEDURE malloc* (size: INTEGER): INTEGER;
  285.     RETURN KOSAPI.malloc(size)
  286. END malloc;
  287.  
  288.  
  289. PROCEDURE SetIPC* (buffer: ARRAY OF INTEGER);
  290. BEGIN
  291.     KOSAPI.sysfunc4(60, 1, SYSTEM.ADR(buffer[0]), LEN(buffer)*SYSTEM.SIZE(INTEGER));
  292. END SetIPC;
  293.  
  294.  
  295. PROCEDURE SendIPC* (tid, msg: INTEGER);
  296. BEGIN
  297.     KOSAPI.sysfunc5(60, 2, tid, SYSTEM.ADR(msg), SYSTEM.SIZE(INTEGER))
  298. END SendIPC;
  299.  
  300.  
  301. END KolibriOS.