145,12 → 145,28 |
RETURN 0 |
END sysfunc22; |
|
PROCEDURE mem_commit(adr, size: INTEGER); |
VAR tmp: INTEGER; |
BEGIN |
FOR tmp := adr TO adr + size - 1 BY 4096 DO |
sys.PUT(tmp, 0) |
END |
END mem_commit; |
|
PROCEDURE [stdcall] malloc*(size: INTEGER): INTEGER; |
VAR ptr: INTEGER; |
BEGIN |
sys.CODE("60"); (* pusha *) |
size := sysfunc3(68, 12, size); |
IF sysfunc2(18, 16) > ASR(size, 10) THEN |
ptr := sysfunc3(68, 12, size); |
IF ptr # 0 THEN |
mem_commit(ptr, size) |
END |
ELSE |
ptr := 0 |
END; |
sys.CODE("61") (* popa *) |
RETURN size |
RETURN ptr |
END malloc; |
|
PROCEDURE [stdcall] free*(ptr: INTEGER): INTEGER; |
311,6 → 327,7 |
PROCEDURE LoadLib*(name: ARRAY OF CHAR): INTEGER; |
VAR Lib: INTEGER; |
BEGIN |
DLL_INIT := dll_Init; |
Lib := sysfunc3(68, 19, sys.ADR(name[0])); |
IF Lib # 0 THEN |
init(Lib) |
318,6 → 335,4 |
RETURN Lib |
END LoadLib; |
|
BEGIN |
DLL_INIT := dll_Init |
END KOSAPI. |