Subversion Repositories Kolibri OS

Rev

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

Rev 8728 Rev 9645
Line 1... Line 1...
1
(*
1
(*
2
    BSD 2-Clause License
2
    BSD 2-Clause License
Line 3... Line 3...
3
 
3
 
4
    Copyright (c) 2018, 2020-2021, Anton Krotov
4
    Copyright (c) 2018, 2020-2022, Anton Krotov
5
    All rights reserved.
5
    All rights reserved.
Line 6... Line 6...
6
*)
6
*)
Line 34... Line 34...
34
    heap, endheap: INTEGER;
34
    heap, endheap: INTEGER;
35
    pockets: ARRAY MAX_SIZE DIV 32 + 1 OF INTEGER;
35
    pockets: ARRAY MAX_SIZE DIV 32 + 1 OF INTEGER;
Line 36... Line 36...
36
 
36
 
Line 37... Line 37...
37
    CriticalSection: CRITICAL_SECTION;
37
    CriticalSection: CRITICAL_SECTION;
Line 38... Line 38...
38
 
38
 
Line 39... Line 39...
39
    _import*, multi: BOOLEAN;
39
    multi: BOOLEAN;
Line 224... Line 224...
224
BEGIN
224
BEGIN
225
    K.sysfunc1(-1)
225
    K.sysfunc1(-1)
226
END exit_thread;
226
END exit_thread;
Line 227... Line -...
227
 
-
 
228
 
-
 
229
PROCEDURE OutChar (c: CHAR);
-
 
230
BEGIN
-
 
231
    K.sysfunc3(63, 1, ORD(c))
-
 
232
END OutChar;
-
 
233
 
-
 
234
 
-
 
235
PROCEDURE OutLn;
-
 
236
BEGIN
-
 
237
    OutChar(0DX);
-
 
238
    OutChar(0AX)
-
 
239
END OutLn;
-
 
240
 
227
 
241
 
228
 
242
PROCEDURE OutStr (pchar: INTEGER);
229
PROCEDURE OutStr (pchar: INTEGER);
243
VAR
230
VAR
244
    c: CHAR;
231
    c: CHAR;
245
BEGIN
232
BEGIN
246
    IF pchar # 0 THEN
233
    IF pchar # 0 THEN
247
        REPEAT
234
        REPEAT
248
            SYSTEM.GET(pchar, c);
235
            SYSTEM.GET(pchar, c);
249
            IF c # 0X THEN
236
            IF c # 0X THEN
250
                OutChar(c)
237
                K.OutChar(c)
251
            END;
238
            END;
252
            INC(pchar)
239
            INC(pchar)
253
        UNTIL c = 0X
240
        UNTIL c = 0X
Line 254... Line 241...
254
    END
241
    END
255
END OutStr;
242
END OutStr;
256
 
243
 
257
 
244
 
258
PROCEDURE DebugMsg* (lpText, lpCaption: INTEGER);
245
PROCEDURE DebugMsg* (lpText, lpCaption: INTEGER);
259
BEGIN
246
BEGIN
260
    IF lpCaption # 0 THEN
247
    IF lpCaption # 0 THEN
261
        OutLn;
248
        K.OutLn;
262
        OutStr(lpCaption);
249
        OutStr(lpCaption);
263
        OutChar(":");
250
        K.OutChar(":");
264
        OutLn
251
        K.OutLn
265
    END;
252
    END;
266
    OutStr(lpText);
253
    OutStr(lpText);
Line 267... Line -...
267
    IF lpCaption # 0 THEN
-
 
268
        OutLn
-
 
269
    END
-
 
270
END DebugMsg;
-
 
271
 
-
 
272
 
-
 
273
PROCEDURE OutString (s: ARRAY OF CHAR);
-
 
274
VAR
-
 
275
    i: INTEGER;
-
 
276
BEGIN
-
 
277
    i := 0;
-
 
278
    WHILE (i < LEN(s)) & (s[i] # 0X) DO
-
 
279
        OutChar(s[i]);
-
 
280
        INC(i)
-
 
281
    END
-
 
282
END OutString;
-
 
283
 
-
 
284
 
-
 
285
PROCEDURE imp_error;
-
 
286
BEGIN
-
 
287
    OutString("import error: ");
-
 
288
    IF K.imp_error.error = 1 THEN
-
 
289
        OutString("can't load '"); OutString(K.imp_error.lib)
-
 
290
    ELSIF K.imp_error.error = 2 THEN
-
 
291
        OutString("not found '"); OutString(K.imp_error.proc); OutString("' in '"); OutString(K.imp_error.lib)
-
 
292
    END;
254
    IF lpCaption # 0 THEN
293
    OutString("'");
255
        K.OutLn
294
    OutLn
256
    END
295
END imp_error;
257
END DebugMsg;
296
 
258
 
297
 
259
 
298
PROCEDURE init* (import_, code: INTEGER);
260
PROCEDURE init* (import_, code: INTEGER);
299
BEGIN
-
 
300
    multi := FALSE;
-
 
301
    base := code - SizeOfHeader;
-
 
302
    K.sysfunc2(68, 11);
-
 
303
    InitializeCriticalSection(CriticalSection);
261
BEGIN
Line 304... Line 262...
304
    K._init;
262
    multi := FALSE;
305
    _import := (K.dll_Load(import_) = 0) & (K.imp_error.error = 0);
263
    base := code - SizeOfHeader;