Subversion Repositories Kolibri OS

Rev

Rev 4879 | Rev 5837 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4879 Rev 4977
1
;
-
 
-
 
1
;------------------------------------------------------------------------------
2
;   DEBUG BOARD for APPLICATIONS and KERNEL DEVELOPMENT
2
; DEBUG BOARD for APPLICATIONS and KERNEL DEVELOPMENT
3
;
-
 
4
;   See f63
3
; See f63
5
;
-
 
6
;   Compile with FASM for KolibriOS
4
; Compile with FASM for KolibriOS
-
 
5
;------------------------------------------------------------------------------
7
;
6
include 'lang.inc'
8
WRITE_LOG    equ 1
7
WRITE_LOG    equ 1
9
P_LEN		 equ 11
8
P_LEN        equ 11
10
include 'lang.inc'
9
;------------------------------------------------------------------------------
11
 
-
 
12
   use32
10
        use32
13
   org	  0x0
11
        org     0x0
14
   db	  'MENUET01'		  ; 8 byte id
12
        db      'MENUET01'
15
   dd	  0x01			  ; header version
13
        dd      0x01
16
   dd	  START 		  ; start of code
14
        dd      START
17
   dd	  I_END 		  ; size of image
15
        dd      I_END
18
   dd	  mem			; memory for app
16
        dd      mem
19
   dd	  mem			; esp
17
        dd      mem
20
   dd	  filename , 0x0	  ; I_Param , I_Icon
18
        dd     filename, 0x0
-
 
19
;------------------------------------------------------------------------------
21
include '../../../macros.inc'
20
include '../../../macros.inc'
22
include '../../../debug.inc'
21
include '../../../debug.inc'
23
purge newline
22
purge       newline
24
MAXSTRINGS = 16
23
MAXSTRINGS  = 16
25
TMP = 80*(MAXSTRINGS+1)
24
TMP = 80*(MAXSTRINGS+1)
26
;------------------------------------------------------------------------------
25
;------------------------------------------------------------------------------
27
START:				; start of execution
26
    START:
28
 
-
 
29
	call CheckUnique
27
        call    CheckUnique
30
 
-
 
31
	mov	edi,filename
28
        mov     edi, filename
32
	cmp	[edi],byte 0
29
        cmp     [edi], byte 0
33
	jnz	param
30
        jnz     param
34
	mov	esi,default_filename
31
        mov     esi, default_filename
35
@@:
32
    @@:
36
	lodsb
33
        lodsb
37
	stosb
34
        stosb
38
	test	al,al
35
        test    al,al
39
	jnz	@b
36
        jnz     @b
40
param:
37
    param:
41
 
-
 
42
; allow user to see messages written before start
-
 
43
;	mov	ecx,4096
-
 
44
;flush:
-
 
45
;	mcall	63,2
-
 
46
;	loop	flush
-
 
47
 
-
 
48
	mov	ecx,TMP
38
        mov     ecx, TMP
49
	xor	eax,eax
39
        xor     eax, eax
50
	mov	edi,[targ]
40
        mov     edi, [targ]
51
	rep	stosb
41
        rep     stosb
52
 
42
 
53
	mov	[tmp1],'x'
43
        mov     [tmp1], 'x'
54
	mov	[tmp2],'x'
44
        mov     [tmp2], 'x'
55
 
45
 
56
	mcall	14
46
        mcall   14
57
	and	eax,0xffff0000
47
        and     eax, 0xffff0000
58
	sub	eax,399 shl 16
48
        sub     eax, 399 shl 16
59
	add	eax,399
49
        add     eax, 399
60
	mov	[xstart],eax
50
        mov     [xstart], eax
61
	mcall	48,3,sc,sizeof.system_colors
51
        mcall   48, 3, sc, sizeof.sys_colors_new
62
 
52
 
63
	mov	esi,filename
53
        mov     esi, filename
64
	call	CreateFile
54
        call    CreateFile
65
;------------------------------------------------------------------------------
55
;------------------------------------------------------------------------------
66
red:
56
red:
67
	call draw_window
57
        call draw_window
68
;------------------------------------------------------------------------------
58
;------------------------------------------------------------------------------
69
still:
59
still:
70
	cmp	[buffer_length],0
60
        cmp     [buffer_length], 0
71
	je	@f
61
        je      @f
72
	call	write_buffer
62
        call    write_buffer
73
@@:
63
    @@:
74
	mcall	23,50		; wait here for event
64
        mcall   23, 50                    ; wait here for event
75
	cmp	eax,1			; redraw request ?
65
        cmp     eax, 1                    ; redraw request ?
76
	je	red
66
        je      red
77
 
67
 
78
	cmp	eax,2			; key in buffer ?
68
        cmp     eax, 2                    ; key in buffer ?
79
	je	key
69
        je      key
80
 
70
 
81
	cmp	eax,3			; button in buffer ?
71
        cmp     eax, 3                    ; button in buffer ?
82
	je	button
72
        je      button
83
 
73
 
84
	mcall	63,2
74
        mcall   63, 2
85
	cmp	ebx,1
75
        cmp     ebx, 1
86
	jne	still
76
        jne     still
87
 
77
 
88
new_data:
78
new_data:
89
	cmp	[buffer_length],255
79
        cmp     [buffer_length], 255
90
	jne	@f
80
        jne     @f
91
	call	write_buffer
81
        call    write_buffer
92
@@:
82
    @@:
93
	movzx	ebx,byte[buffer_length]
83
        movzx   ebx, byte[buffer_length]
94
	mov	[ebx+tmp],al
84
        mov     [ebx+tmp], al
95
	inc	[buffer_length]
85
        inc     [buffer_length]
96
 
-
 
97
	mov	ebp,[targ]
86
        mov     ebp, [targ]
98
.no4:
87
    .no4:
99
	cmp	al,13
88
        cmp     al, 13
100
	jne	no13
89
        jne     no13
101
	and	[ebp-8],dword 0
90
        and     [ebp-8], dword 0
102
	jmp	new_check
91
        jmp     new_check
103
;------------------------------------------
92
;------------------------------------------
104
write_buffer:
93
write_buffer:
105
	pusha
94
        pusha
106
	mov	edx,tmp
95
        mov     edx, tmp
107
	movzx	ecx,byte[buffer_length]	;1
96
        movzx   ecx, byte[buffer_length]	;1
108
	mov	esi,filename
97
        mov     esi, filename
109
.write_to_logfile:
98
    .write_to_logfile:
110
	call	WriteToFile
99
        call    WriteToFile
111
	cmp	eax,5
100
        cmp     eax, 5
112
	jne	@f
101
        jne     @f
113
	mov	esi,filename
102
        mov     esi, filename
114
	mov	[filepos],0
103
        mov     [filepos], 0
115
	call	CreateFile
104
        call    CreateFile
116
	jnc	.write_to_logfile
105
        jnc     .write_to_logfile
117
@@:
106
@@:
118
	movzx	eax,byte[buffer_length]
107
        movzx   eax,byte[buffer_length]
119
	add	[filepos],eax
108
        add     [filepos],eax
120
	xor	eax,eax
109
        xor     eax,eax
121
	mov	[buffer_length],al
110
        mov     [buffer_length],al
122
	popa
111
        popa
123
	ret
112
        ret
124
;------------------------------------------
113
;------------------------------------------
125
no13:
114
no13:
126
	cmp	al,10
115
        cmp     al, 10
127
	jne	no10
116
        jne     no10
128
	and	[ebp-8],dword 0
117
        and     [ebp-8], dword 0
129
	inc	dword [ebp-4]
118
        inc     dword [ebp-4]
130
	cmp	[ebp-4],dword MAXSTRINGS
119
        cmp     [ebp-4], dword MAXSTRINGS
131
	jbe	.noypos
120
        jbe     .noypos
132
	mov	[ebp-4],dword MAXSTRINGS
121
        mov     [ebp-4], dword MAXSTRINGS
133
	lea	esi,[ebp+80]
122
        lea     esi, [ebp+80]
134
	mov	edi,ebp
123
        mov     edi, ebp
135
	mov	ecx,80*(MAXSTRINGS)
124
        mov     ecx, 80*(MAXSTRINGS)
136
	cld
125
        cld
137
	rep	movsb
126
        rep     movsb
138
 
127
 
139
	mov	esi,[ebp-4]
128
        mov     esi, [ebp-4]
140
	imul	esi,80
129
        imul    esi, 80
141
	add	esi,[ebp-8]
130
        add     esi, [ebp-8]
142
	add	esi,ebp
131
        add     esi, ebp
143
	mov	ecx,80
132
        mov     ecx, 80
144
	xor	al,al
133
        xor     al , al
145
	rep	stosb
134
        rep     stosb
146
.noypos:
135
    .noypos:
147
	mov	[targ],text2
136
        mov     [targ],text2
148
	and	[krnl_cnt],0
137
        and     [krnl_cnt],0
149
	jmp	new_check
138
        jmp     new_check
150
;------------------------------------------
139
;------------------------------------------
151
no10:
140
no10:
152
	cmp	ebp,text1
141
        cmp     ebp, text1
153
	je	add2
142
        je      add2
154
	mov	ecx,[krnl_cnt]
143
        mov     ecx, [krnl_cnt]
155
	cmp	al,[krnl_msg+ecx]
144
        cmp     al, [krnl_msg+ecx]
156
	jne	.noknl
145
        jne     .noknl
157
	inc	[krnl_cnt]
146
        inc     [krnl_cnt]
158
	cmp	[krnl_cnt],4
147
        cmp     [krnl_cnt], 4
159
	jne	new_check
148
        jne     new_check
160
	mov	[targ],text1
149
        mov     [targ], text1
161
.noknl:
150
    .noknl:
162
	mov	ebp,[targ]
151
        mov     ebp, [targ]
163
	jecxz	.add
152
        jecxz   .add
164
	push	eax
153
        push    eax
165
	mov	esi,krnl_msg
154
        mov     esi, krnl_msg
166
.l1:
155
    .l1:
167
	lodsb
156
        lodsb
168
	call	add_char
157
        call    add_char
169
	loop	.l1
158
        loop    .l1
170
	pop	eax
159
        pop     eax
171
.add:
160
    .add:
172
	and	[krnl_cnt],0
161
        and     [krnl_cnt], 0
173
add2:
162
add2:
174
	call	add_char
163
        call    add_char
175
 
164
 
176
new_check:
165
new_check:
177
	mcall	63,2
166
        mcall   63, 2
178
	cmp	ebx,1
167
        cmp     ebx, 1
179
	je	new_data
168
        je      new_data
180
	call	draw_text
169
        call    draw_text
181
	jmp	still
170
        jmp     still
182
;------------------------------------------------------------------------------
171
;------------------------------------------------------------------------------
183
key:
172
key:
184
	mcall	2
173
        mcall   2
185
	cmp	ah,' '
174
        cmp     ah, ' '
186
	je	button.noclose
175
        je      button.noclose
187
	jmp	still
176
        jmp     still
188
;------------------------------------------------------------------------------
177
;------------------------------------------------------------------------------
189
button:
178
button:
190
	mcall	17	; get id
179
        mcall   17                        ; get id
191
	cmp	ah,1		; button id=1 ?
180
        cmp     ah, 1                     ; button id=1 ?
192
	jne	.noclose
181
        jne     .noclose
193
	or	eax,-1 		; close this program
182
        or      eax, -1                   ; close this program
194
	mcall
183
        mcall
195
.noclose:
184
    .noclose:
196
	xor	[vmode],1
185
        xor     [vmode], 1
197
	jmp	red
186
        jmp     red
198
;------------------------------------------------------------------------------
187
;------------------------------------------------------------------------------
199
add_char:
188
add_char:
200
	push	esi
189
        push    esi
201
	mov	esi,[ebp-4]
190
        mov     esi, [ebp-4]
202
	imul	esi,80
191
        imul    esi, 80
203
	add	esi,[ebp-8]
192
        add     esi, [ebp-8]
204
	mov	[ebp+esi],al
193
        mov     [ebp+esi], al
205
	inc	dword[ebp-8]
194
        inc     dword[ebp-8]
206
	cmp	dword[ebp-8],80
195
        cmp     dword[ebp-8], 80
207
	jb	.ok
196
        jb      .ok
208
	mov	dword[ebp-8],79
197
        mov     dword[ebp-8], 79
209
.ok:
198
.ok:
210
	pop	esi
199
        pop     esi
211
	ret
200
        ret
212
	
201
	
213
;------------------------------------------------------------------------------
202
;------------------------------------------------------------------------------
214
;   *********************************************
203
;************************  WINDOW DEFINITIONS AND DRAW ************************
215
;   *******  WINDOW DEFINITIONS AND DRAW ********
204
;------------------------------------------------------------------------------
216
;   *********************************************
-
 
217
draw_window:
205
draw_window:
218
	mcall	12,1	; 1, start of draw
206
        mcall   12, 1                     ; 1, start of draw
219
	mcall 48, 5     ; GetClientTop
207
        mcall   48, 5                     ; GetClientTop
220
    shr ebx, 16
208
        shr     ebx, 16
221
	mov	ecx,ebx
209
        mov     ecx, ebx
222
	shl ecx,16
210
        shl     ecx, 16
223
	add ecx,MAXSTRINGS*10+45	   ; [y start] *65536 + [y size]
211
        add     ecx, MAXSTRINGS*10+45     ; [y start] *65536 + [y size]
224
	xor	eax,eax		     ; function 0 : define and draw window
212
        xor     eax, eax                  ; function 0 : define and draw window
225
;	mov	edx,[sc.work]		   ; color of work area RRGGBB,8->color gl
-
 
226
	mov	edx,0xffffff
213
        mov     edx, 0xffffff
227
	or	edx,0x14000000
214
        or      edx, 0x14000000
228
	xor	esi,esi
215
        xor     esi, esi
229
	mcall	,[xstart],,,,title
216
        mcall   ,[xstart],,,,title
230
	mov	ebx,296 shl 16+5*6
217
        mov     ebx, 296 shl 16+31
231
	mcall	8,,<5,12>,3,[sc.work]
218
        mcall   8,,<4,13>,3,[sc.btn_face]
232
	mov	edx,[vmode]
219
        mov     edx, [vmode]
233
	lea	edx,[edx*4+duk]
220
        lea     edx, [edx*4+duk]
234
	mcall	4,<300,8>,,,4
221
        mcall   4,<300,7>,,,4
235
	call	draw_text
222
        call    draw_text
236
	mcall	12,2	; 2, end of draw
223
        mcall   12, 2                     ; 2, end of draw
237
	ret
224
        ret
238
;------------------------------------------------------------------------------
225
;------------------------------------------------------------------------------
239
draw_text:
226
draw_text:
240
	mov	ebx,15*65536+30	   ; draw info text with function 4
227
        mov     ebx, 15*65536+30          ; draw info text with function 4
241
;	mov	ecx,[sc.work_text]
-
 
242
	xor	ecx,ecx
228
        xor     ecx, ecx
243
	or	ecx,0x40000000
229
        or      ecx, 0x40000000
244
;	mov	edi,[sc.work]
-
 
245
	mov	edi,0xffffff
230
        mov     edi, 0xffffff
246
	mov	edx,text1
231
        mov     edx, text1
247
	cmp	[vmode],0
232
        cmp     [vmode], 0
248
	je	.kern
233
        je      .kern
249
	mov	edx,text2
234
        mov     edx, text2
250
.kern:
235
    .kern:
251
	push	ebx ecx edx
236
        push    ebx ecx edx
252
	mcall	9,procinfo,-1
237
        mcall   9, procinfo,-1
253
	mov	eax,[ebx+42]
238
        mov     eax, [ebx+42]
254
	xor	edx,edx
239
        xor     edx, edx
255
	mov	ebx,6
240
        mov     ebx, 6
256
	div	ebx
241
        div     ebx
257
	pop	edx ecx ebx
242
        pop     edx ecx ebx
258
	mov	esi,80
243
        mov     esi, 80
259
	cmp	eax,esi
244
        cmp     eax, esi
260
	ja	@f
245
        ja      @f
261
	mov	esi,eax
246
        mov     esi, eax
262
@@:
247
@@:
263
	cmp	esi,5
248
        cmp     esi, 5
264
	ja	@f
249
        ja      @f
265
	mov	esi,5
250
        mov     esi, 5
266
@@:
251
@@:
267
	sub	esi,4
252
        sub     esi, 4
268
	mov	eax,4
253
        mov     eax, 4
269
newline:
254
newline:
270
	mcall
255
        mcall
271
	add	ebx,10
256
        add     ebx, 10
272
	add	edx,80
257
        add     edx, 80
273
	cmp	[edx],byte 'x'
258
        cmp     [edx], byte 'x'
274
	jne	newline
259
        jne     newline
275
	ret
260
        ret
-
 
261
 
276
;------------------------------------------------------------------------------
262
;------------------------------------------------------------------------------
277
;********************************************
-
 
278
;*  input:  esi = pointer to the file name  *
263
;*  input:  esi = pointer to the file name  *
279
;********************************************
264
;------------------------------------------------------------------------------
280
 
-
 
281
CreateFile:
265
CreateFile:
282
	pusha
266
        pusha
283
	mov	dword [InfoStructure],2		; create file
267
        mov     dword [InfoStructure+00], 2   ; create file
284
	mov	dword [InfoStructure+4],0	; reserved
268
        mov     dword [InfoStructure+04], 0   ; reserved
285
	mov	dword [InfoStructure+8],0	; reserved
269
        mov     dword [InfoStructure+08], 0   ; reserved
286
	mov	dword [InfoStructure+12],0	; 0 bytes to write (just create)
270
        mov     dword [InfoStructure+12], 0   ; 0 bytes to write (just create)
287
	mov	dword [InfoStructure+16],0	; NULL data pointer (no data)
271
        mov     dword [InfoStructure+16], 0   ; NULL data pointer (no data)
288
	mov	dword [InfoStructure+20],0	; reserved
272
        mov     dword [InfoStructure+20], 0   ; reserved
289
	mov	dword [InfoStructure+21],esi	; pointer to the file name
273
        mov     dword [InfoStructure+21], esi ; pointer to the file name
290
	mcall	70, InfoStructure
274
        mcall   70, InfoStructure
291
	test	eax,eax
275
        test    eax, eax
292
	jz	.out
276
        jz      .out
293
	stc
277
        stc
294
.out:
278
    .out:
295
	popa
279
        popa
296
	ret
280
        ret
297
;------------------------------------------------
281
;------------------------------------------------------------------------------
298
;********************************************
-
 
299
;*  input:  esi = pointer to the file name  *
282
;*  input:  esi = pointer to the file name  *
300
;*          edx = pointer to data buffer    *
283
;*          edx = pointer to data buffer    *
301
;*          ecx = data length               *
284
;*          ecx = data length               *
302
;********************************************
285
;------------------------------------------------------------------------------
303
 
-
 
304
WriteToFile:
286
WriteToFile:
305
	push	ebx
287
        push    ebx
306
	mov	dword [InfoStructure],3		; write to file
288
        mov     dword [InfoStructure+00], 3   ; write to file
307
	mov	eax,  [filepos]
289
        mov     eax,  [filepos]
308
	mov	dword [InfoStructure+4],eax	; lower position addr
290
        mov     dword [InfoStructure+04], eax ; lower position addr
309
	mov	dword [InfoStructure+8],0	; upper position addr (0 for FAT)
291
        mov     dword [InfoStructure+08], 0   ; upper position addr (0 for FAT)
310
	mov	dword [InfoStructure+12],ecx	; number of bytes to write
292
        mov     dword [InfoStructure+12], ecx ; number of bytes to write
311
	mov	dword [InfoStructure+16],edx	; pointer to data buffer
293
        mov     dword [InfoStructure+16], edx ; pointer to data buffer
312
	mov	dword [InfoStructure+20],0	; reserved
294
        mov     dword [InfoStructure+20], 0   ; reserved
313
	mov	dword [InfoStructure+21],esi	; pointer to the file name
295
        mov     dword [InfoStructure+21], esi ; pointer to the file name
314
	mcall	70, InfoStructure
296
        mcall   70, InfoStructure
315
	clc
297
        clc
316
	test	eax,eax
298
        test    eax, eax
317
	jz	.out
299
        jz      .out
318
	stc
300
        stc
319
.out:
301
    .out:
320
	pop      ebx
302
        pop      ebx
321
	ret
303
        ret
322
 
304
 
323
;-------------------------------------------------
-
 
324
;********************************************
305
;------------------------------------------------------------------------------
325
;*  input:  esi = pointer to string         *
306
;*  input:  esi = pointer to string         *
326
;*          edi = pointer to string         *
307
;*          edi = pointer to string         *
327
;*          ecx = data length               *
308
;*          ecx = data length               *
328
;********************************************
309
;------------------------------------------------------------------------------
329
StrCmp:
310
StrCmp:
330
	repe cmpsb
311
        repe    cmpsb
331
	ja .a_greater_b
312
        ja      .a_greater_b
332
	jb .a_less_b
313
        jb      .a_less_b
333
.equal:
314
    .equal:
334
	mov eax, 0
315
        mov     eax, 0
335
	jmp .end
316
        jmp     .end
336
.a_less_b:
317
    .a_less_b:
337
	mov eax, 1
318
        mov     eax, 1
338
	jmp .end
319
        jmp     .end
339
.a_greater_b:
320
    .a_greater_b:
340
	mov eax, -1
321
        mov     eax, -1
341
.end:
322
    .end:
342
	ret
323
        ret
343
 
324
 
344
;-------------------------------------------------
-
 
345
;********************************************
325
;------------------------------------------------------------------------------
346
;*  input:  edi = pointer to string         *
326
;*  input:  edi = pointer to string          *
347
;*          ecx = data length			    *
327
;*          ecx = data length                *
348
;********************************************
328
;------------------------------------------------------------------------------
349
; 'a' - 'A' = 32 -> 'A'|32 = 'a'
329
; 'a' - 'A' = 32 -> 'A'|32 = 'a'
350
ToLower:
330
ToLower:
351
	xor eax, eax
331
        xor     eax, eax
352
.cycle:
332
.cycle:
353
	or byte[edi+eax], 32
333
        or      byte[edi+eax], 32
354
	inc eax
334
        inc     eax
355
	loop .cycle
335
        loop    .cycle
356
.end:
336
.end:
357
	ret
337
        ret
358
 
-
 
359
 
338
 
-
 
339
;------------------------------------------------------------------------------
-
 
340
;* get info on current thread, save pid/tid
-
 
341
;* look for another process with same name and different pid/tid
-
 
342
;* if found, close self
-
 
343
;* else continue normally
360
;-------------------------------------------------
344
;------------------------------------------------------------------------------
361
CheckUnique:
-
 
362
;get info on current thread, save pid/tid
-
 
363
;look for another process with same name and different pid/tid
-
 
364
;if found, close self
-
 
365
;else continue normally
-
 
366
 
345
CheckUnique:
367
.get_thread_info:
346
    .get_thread_info:
368
	mov ebx, procinfo
347
        mov     ebx, procinfo
369
	mov ecx, -1
348
        mov     ecx, -1
370
	mcall 9
349
        mcall   9
371
.get_pid:
350
 
372
; check_buffer
351
    .get_pid:                             ; check_buffer
373
	mov [process_count], eax
352
        mov     [process_count], eax
374
	mov eax, [ebx+process_information.PID]
353
        mov     eax, [ebx+process_information.PID]
375
	mov [pid_tid], eax
354
        mov     [pid_tid], eax
376
	mov ecx, 2
355
        mov     ecx, 2
377
 
356
 
378
.check_threads:
357
    .check_threads:
379
	cmp ecx, [process_count]
358
        cmp     ecx, [process_count]
380
	ja .leave_check
359
        ja      .leave_check
381
	mov eax, 9
360
        mov     eax, 9
382
	mcall
361
        mcall
383
 
362
 
384
.check_slot_free:
363
    .check_slot_free:
385
	cmp dword [ebx+process_information.slot_state], 9
364
        cmp     dword [ebx+process_information.slot_state], 9
386
	je .next_thread
365
        je      .next_thread
387
 
366
 
388
.check_pid:
367
    .check_pid:
389
	mov eax, [pid_tid]
368
        mov     eax, [pid_tid]
390
	cmp [ebx+process_information.PID], eax
369
        cmp     [ebx+process_information.PID], eax
391
	je .next_thread
370
        je      .next_thread
392
 
371
 
393
.get_proc_name:
372
    .get_proc_name:
394
	lea edi, [ebx+process_information.process_name]
373
        lea     edi, [ebx+process_information.process_name]
395
	push ecx
374
        push    ecx
396
	mov ecx, my_name_size-1
375
        mov     ecx, my_name_size-1
-
 
376
 
397
.lower_case:
377
    .lower_case:
398
	call ToLower
378
        call    ToLower
399
	lea esi, [my_name]
379
        lea     esi, [my_name]
400
 
-
 
401
	mov ecx, my_name_size
380
        mov     ecx, my_name_size
402
	call StrCmp
381
        call    StrCmp
403
 
-
 
404
	pop ecx
382
        pop     ecx
405
 
-
 
406
	cmp eax, 0
383
        cmp     eax, 0
407
	je .close_program
384
        je      .close_program
408
 
385
 
409
.next_thread:
386
    .next_thread:
410
	inc ecx
387
        inc     ecx
411
	jmp .check_threads
388
        jmp     .check_threads
412
 
389
 
413
.close_program:
390
    .close_program:
414
	mcall 18,3 ; restore and active window of previous thread
391
        ; restore and active window of previous thread
-
 
392
        mcall    18, 3
415
	mov eax, -1
393
        mov      eax, -1
416
	mcall
394
        mcall
417
 
395
 
418
.leave_check:
396
    .leave_check:
419
	ret
397
        ret
420
 
398
 
421
 
-
 
-
 
399
 
-
 
400
;------------------------------------------------------------------------------
422
 
401
;***********************************  DATA ************************************
-
 
402
;------------------------------------------------------------------------------
423
;--------------------------------------------------
403
align 4
424
InfoStructure:
404
InfoStructure:
425
	dd 0x0	; subfunction number
405
        dd      0x0                       ; subfunction number
426
	dd 0x0	; position in the file in bytes
406
        dd      0x0                       ; position in the file in bytes
427
	dd 0x0	; upper part of the position address
407
        dd      0x0                       ; upper part of the position address
428
	dd 0x0	; number of bytes to read
408
        dd      0x0                       ; number of bytes to read
429
	dd 0x0	; pointer to the buffer to write data
409
        dd      0x0                       ; pointer to the buffer to write data
430
	db 0
410
        db      0x0
431
	dd 0	; pointer to the filename
411
        dd      0x0                       ; pointer to the filename
432
 
-
 
433
filepos	dd 0
412
filepos dd      0x0
434
default_filename db '/sys/boardlog.txt',0
413
default_filename db '/sys/boardlog.txt',0
435
;------------------------------------------------------------------------------
414
;------------------------------------------------------------------------------
436
krnl_msg db 'K : '
-
 
437
duk db 'KernUser'
-
 
438
 
-
 
439
; DATA AREA
-
 
440
 
-
 
441
; 11,11 > 0,-1
-
 
442
; 5,11  > 0,-1
-
 
443
if lang eq ru
415
if lang eq ru
444
 title	db '„®áª  ®â« ¤ª¨ ¨ á®®¡é¥­¨©',0
416
 title	db '„®áª  ®â« ¤ª¨ ¨ á®®¡é¥­¨©',0
445
else if lang eq it
417
else if lang eq it
446
 title	db 'Notifiche e informazioni generiche per il debug',0
418
 title	db 'Notifiche e informazioni generiche per il debug',0
447
else if lang eq ge
419
else if lang eq ge
448
 title	db 'Allgemeines debug- & nachrichtenboard',0
420
 title	db 'Allgemeines debug- & nachrichtenboard',0
449
else
421
else
450
 title	db 'General debug & message board',0
422
 title	db 'General debug & message board',0
451
end if
423
end if
-
 
424
;------------------------------------------------------------------------------
-
 
425
krnl_msg        db  'K : '
-
 
426
duk             db  'KernUser'
452
krnl_cnt	dd 0
427
krnl_cnt        dd  0
453
vmode		dd 1
428
vmode           dd  1
454
targ		dd text2
429
targ            dd  text2
455
 
-
 
456
my_name 	   db 'board',0
430
my_name         db  'board',0
457
my_name_size   = $-my_name
431
my_name_size    = $-my_name
458
process_count  dd 0x0
432
process_count   dd  0x0
459
pid_tid		   dd 0x0
433
pid_tid         dd  0x0
460
;------------------------------------------------------------------------------
434
;------------------------------------------------------------------------------
461
I_END:
435
I_END:
462
;------------------------------------------------------------------------------
436
;------------------------------------------------------------------------------
463
offs	dd ?
437
offs            dd  ?
464
flag	rb 1
438
flag            rb  1
465
	rd 2
439
                rd  2
466
;x1pos	dd ?
-
 
467
;y1pos	dd ?
-
 
468
text1	rb 80*(MAXSTRINGS+1)
440
text1           rb  80*(MAXSTRINGS+1)
469
tmp1	db ?
441
tmp1            db  ?
470
	rd 2
442
                rd  2
471
;x2pos	dd ?
-
 
472
;y2pos	dd ?
-
 
473
text2	rb 80*(MAXSTRINGS+1)
443
text2           rb  80*(MAXSTRINGS+1)
474
tmp2	db ?
444
tmp2            db  ?
475
xstart	dd ?
445
xstart          dd  ?
476
 
-
 
477
sc system_colors
446
sc              sys_colors_new
478
 
-
 
479
i_end:
447
i_end:
480
buffer_length	rb 1
448
buffer_length   rb  1
481
;------------------------------------------------------------------------------
449
;------------------------------------------------------------------------------
482
tmp	rb	256
450
tmp             rb  256
483
;------------------------------------------------------------------------------
-
 
484
filename	rb 256
451
filename        rb  256
485
;------------------------------------------------------------------------------
452
;------------------------------------------------------------------------------
486
align 4
453
align 4
487
procinfo:
454
procinfo:
488
	rb 1024
455
        rb 1024
489
;------------------------------------------------------------------------------
456
;------------------------------------------------------------------------------
490
align 4
457
align 4
491
stackbuf	rb 2000h
458
stackbuf        rb  2000h
492
;------------------------------------------------------------------------------
459
;------------------------------------------------------------------------------
493
mem:
460
mem: