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 |