Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3245 Albom 1
 
2
 
3
SC_PUTC = 2
4
SC_PUTS = 3
5
SC_GETC = 4
6
SC_GETS = 5
7
SC_CLS	= 6
8
9
SHM_WRITE =  0x01
10
 
11
12
;============================
13
 
14
align 4
15
 
16
sc_pid	   dd 0
17
sc_buffer  dd 0
18
sc_process dd 0
19
20
;============================
21
 
22
align 4
23
 
24
25
 push esp
26
 
27
28
 xor ecx, ecx
29
 
30
 mov ebx, 10
31
@@:
32
 xor edx, edx
33
 div ebx
34
 push edx
35
 inc ecx
36
 test eax, eax
37
 jnz @b
38
39
mov edi, sc_name
40
 
41
@@:
42
 
43
 add al, '0'
44
 stosb
45
 loop @b
46
47
48
 
49
 
50
 mov al, 'S'
51
 stosb
52
 mov al, 'H'
53
 stosb
54
 mov al, 'E'
55
 stosb
56
 mov al, 'L'
57
 stosb
58
 mov al, 'L'
59
 stosb
60
 mov al,  0
61
 stosb
62
63
64
 
65
 
66
67
 ret
68
 
69
;============================
70
 
71
align 4
72
 
73
_sc_init:
74
75
 push esp
76
 
77
78
 mov eax, 68
79
 
80
 int 0x40
81
82
 mov eax, 68 ; выделить память
83
 
84
 mov ecx, 1024
85
 int 0x40
86
87
 mov [sc_process], eax
88
 
89
 mov eax, 9 ; получить информацию о текущем процессе
90
 
91
 mov ecx, -1
92
 int 0x40
93
94
 mov dword eax, [ebx+30] ; получаем PID текщего процесса
95
 
96
97
 mov eax, 68 ; освободить память
98
 
99
 mov ecx, [sc_process]
100
 int 0x40
101
102
 call _sc_pid2name
103
 
104
 mov eax, 68 ; открыть именованную область
105
 
106
 mov dword ecx, sc_name
107
 mov edx, 4096
108
 mov esi, SHM_OPEN_ALWAYS or SHM_WRITE
109
 int 0x40
110
111
 mov [sc_buffer], eax
112
 
113
 pop ebx
114
 
115
116
 ret
117
 
118
;============================
119
 
120
align 4
121
 
122
_sc_puts:
123
124
 push esp
125
 
126
127
 mov esi, [esp+12]
128
 
129
 mov al, SC_PUTS
130
 stosb
131
132
@@:
133
 
134
 stosb
135
 test al, al
136
 jnz @b
137
138
 mov ebx, [sc_buffer]
139
 
140
@@:
141
 
142
 test dl, dl
143
 jz @f
144
 push ebx
145
 mov eax, 5
146
 mov ebx, 5
147
 int 0x40
148
 pop ebx
149
 jmp @b
150
151
@@:
152
 
153
 pop ebx
154
 
155
 ret 4
156
157
;============================
158
 
159
align 4
160
 
161
_sc_exit:
162
 push ebx
163
 push esp
164
165
 mov ebx, [sc_buffer]
166
 
167
168
@@:
169
 
170
 test dl, dl
171
 jz @f
172
 push ebx
173
 mov eax, 5
174
 mov ebx, 5
175
 int 0x40
176
 pop ebx
177
 jmp @b
178
179
@@:
180
 
181
 mov ebx, 23
182
 mov dword ecx, sc_name
183
 int 0x40
184
185
 pop esp
186
 
187
 ret
188
189
190
 
191
 
192
align 4
193
 
194
_sc_gets:
195
196
 push esp
197
 
198
199
 mov edi, [esp+12]
200
 
201
 mov ebx, [sc_buffer]
202
 
203
204
@@:
205
 
206
 test dl, dl
207
 jz @f
208
 push ebx
209
 mov eax, 5
210
 mov ebx, 5
211
 int 0x40
212
 pop ebx
213
 jmp @b
214
215
@@:
216
 
217
218
 
219
 
220
221
@@:
222
 
223
 stosb
224
 test al, al
225
 jnz @b
226
227
 pop ebx
228
 
229
 ret 4
230
231
;============================
232