Subversion Repositories Kolibri OS

Rev

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.