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; |