Subversion Repositories Kolibri OS

Rev

Rev 8762 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
8728 leency 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 .
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.