Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
9849 | akron1 | 1 | (* |
2 | BSD 2-Clause License |
||
3 | |||
4 | Copyright (c) 2018-2022, Anton Krotov |
||
5 | All rights reserved. |
||
6 | *) |
||
7 | |||
8 | MODULE API; |
||
9 | |||
10 | IMPORT SYSTEM; |
||
11 | |||
12 | CONST |
||
13 | eol* = 0DX + 0AX; |
||
14 | BIT_DEPTH* = 32; |
||
15 | |||
16 | VAR |
||
17 | action*, cmdline*: INTEGER; |
||
18 | |||
19 | |||
20 | PROCEDURE [stdcall-] sysfunc3* (arg1, arg2, arg3: INTEGER): INTEGER; |
||
21 | BEGIN |
||
22 | SYSTEM.CODE( |
||
23 | 053H, (* push ebx *) |
||
24 | 08BH, 045H, 008H, (* mov eax, dword [ebp + 8] *) |
||
25 | 08BH, 05DH, 00CH, (* mov ebx, dword [ebp + 12] *) |
||
26 | 08BH, 04DH, 010H, (* mov ecx, dword [ebp + 16] *) |
||
27 | 0CDH, 040H, (* int 64 *) |
||
28 | 05BH, (* pop ebx *) |
||
29 | 0C9H, (* leave *) |
||
30 | 0C2H, 00CH, 000H (* ret 12 *) |
||
31 | ) |
||
32 | RETURN 0 |
||
33 | END sysfunc3; |
||
34 | |||
35 | |||
36 | PROCEDURE OutChar* (c: CHAR); |
||
37 | BEGIN |
||
38 | sysfunc3(63, 1, ORD(c)) |
||
39 | END OutChar; |
||
40 | |||
41 | |||
42 | PROCEDURE OutLn*; |
||
43 | BEGIN |
||
44 | OutChar(0DX); |
||
45 | OutChar(0AX) |
||
46 | END OutLn; |
||
47 | |||
48 | |||
49 | PROCEDURE OutStr (pchar: INTEGER); |
||
50 | VAR |
||
51 | c: CHAR; |
||
52 | BEGIN |
||
53 | IF pchar # 0 THEN |
||
54 | REPEAT |
||
55 | SYSTEM.GET(pchar, c); |
||
56 | IF c # 0X THEN |
||
57 | OutChar(c) |
||
58 | END; |
||
59 | INC(pchar) |
||
60 | UNTIL c = 0X |
||
61 | END |
||
62 | END OutStr; |
||
63 | |||
64 | |||
65 | PROCEDURE DebugMsg* (lpText, lpCaption: INTEGER); |
||
66 | BEGIN |
||
67 | IF lpCaption # 0 THEN |
||
68 | OutLn; |
||
69 | OutStr(lpCaption); |
||
70 | OutChar(":"); |
||
71 | OutLn |
||
72 | END; |
||
73 | OutStr(lpText); |
||
74 | IF lpCaption # 0 THEN |
||
75 | OutLn |
||
76 | END |
||
77 | END DebugMsg; |
||
78 | |||
79 | |||
80 | PROCEDURE _NEW* (size: INTEGER): INTEGER; |
||
81 | RETURN sysfunc3(68, 12, size) |
||
82 | END _NEW; |
||
83 | |||
84 | |||
85 | PROCEDURE _DISPOSE* (ptr: INTEGER): INTEGER; |
||
86 | BEGIN |
||
87 | sysfunc3(68, 13, ptr) |
||
88 | RETURN 0 |
||
89 | END _DISPOSE; |
||
90 | |||
91 | |||
92 | PROCEDURE init* (reserved, code: INTEGER); |
||
93 | BEGIN |
||
94 | sysfunc3(68, 11, 0) |
||
95 | END init; |
||
96 | |||
97 | |||
98 | PROCEDURE exit* (code: INTEGER); |
||
99 | BEGIN |
||
100 | sysfunc3(-1, 0, 0) |
||
101 | END exit; |
||
102 | |||
103 | |||
104 | PROCEDURE exit_thread* (code: INTEGER); |
||
105 | BEGIN |
||
106 | sysfunc3(-1, 0, 0) |
||
107 | END exit_thread; |
||
108 | |||
109 | |||
110 | PROCEDURE dllentry* (hinstDLL, fdwReason, lpvReserved: INTEGER): INTEGER; |
||
111 | BEGIN |
||
112 | action := hinstDLL; |
||
113 | cmdline := fdwReason |
||
114 | RETURN action |
||
115 | END dllentry; |
||
116 | |||
117 | |||
118 | PROCEDURE sofinit*; |
||
119 | END sofinit; |
||
120 | |||
121 | |||
122 | END API. |