Subversion Repositories Kolibri OS

Rev

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

Rev 6613 Rev 6647
Line 143... Line 143...
143
  sys.CODE("C9");               (* leave                    *)
143
  sys.CODE("C9");               (* leave                    *)
144
  sys.CODE("C20C00");           (* ret     0Ch              *)
144
  sys.CODE("C20C00");           (* ret     0Ch              *)
145
  RETURN 0
145
  RETURN 0
146
END sysfunc22;
146
END sysfunc22;
Line -... Line 147...
-
 
147
 
-
 
148
PROCEDURE mem_commit(adr, size: INTEGER);
-
 
149
VAR tmp: INTEGER;
-
 
150
BEGIN
-
 
151
  FOR tmp := adr TO adr + size - 1 BY 4096 DO
-
 
152
    sys.PUT(tmp, 0)
-
 
153
  END
-
 
154
END mem_commit;
147
 
155
 
-
 
156
PROCEDURE [stdcall] malloc*(size: INTEGER): INTEGER;
148
PROCEDURE [stdcall] malloc*(size: INTEGER): INTEGER;
157
VAR ptr: INTEGER;
149
BEGIN
158
BEGIN
-
 
159
  sys.CODE("60"); (* pusha *)
150
  sys.CODE("60"); (* pusha *)
160
  IF sysfunc2(18, 16) > ASR(size, 10) THEN
-
 
161
    ptr := sysfunc3(68, 12, size);
-
 
162
    IF ptr # 0 THEN
-
 
163
      mem_commit(ptr, size)
-
 
164
    END
-
 
165
  ELSE
-
 
166
    ptr := 0
151
  size := sysfunc3(68, 12, size);
167
  END;
152
  sys.CODE("61")  (* popa  *)
168
  sys.CODE("61")  (* popa  *)
153
  RETURN size
169
  RETURN ptr
Line 154... Line 170...
154
END malloc;
170
END malloc;
155
 
171
 
156
PROCEDURE [stdcall] free*(ptr: INTEGER): INTEGER;
172
PROCEDURE [stdcall] free*(ptr: INTEGER): INTEGER;
Line 309... Line 325...
309
END dll_Init;
325
END dll_Init;
Line 310... Line 326...
310
 
326
 
311
PROCEDURE LoadLib*(name: ARRAY OF CHAR): INTEGER;
327
PROCEDURE LoadLib*(name: ARRAY OF CHAR): INTEGER;
312
VAR Lib: INTEGER;
328
VAR Lib: INTEGER;
-
 
329
BEGIN
313
BEGIN
330
  DLL_INIT := dll_Init;
314
  Lib := sysfunc3(68, 19, sys.ADR(name[0]));
331
  Lib := sysfunc3(68, 19, sys.ADR(name[0]));
315
  IF Lib # 0 THEN
332
  IF Lib # 0 THEN
316
    init(Lib)
333
    init(Lib)
317
  END
334
  END
318
  RETURN Lib
335
  RETURN Lib
Line 319... Line -...
319
END LoadLib;
-
 
320
 
-
 
321
BEGIN
336
END LoadLib;
322
  DLL_INIT := dll_Init
337