Subversion Repositories Kolibri OS

Rev

Rev 1998 | Rev 2743 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1998 Rev 2234
Line 21... Line 21...
21
include '../../../macros.inc'
21
include '../../../macros.inc'
22
include 'debug.inc'
22
include 'debug.inc'
23
purge newline
23
purge newline
24
MAXSTRINGS = 16
24
MAXSTRINGS = 16
25
TMP = 80*(MAXSTRINGS+1)
25
TMP = 80*(MAXSTRINGS+1)
26
 
-
 
-
 
26
;------------------------------------------------------------------------------
27
START:				; start of execution
27
START:				; start of execution
28
	mov	edi, filename
28
	mov	edi,filename
29
	cmp	byte [edi], 0
29
	cmp	[edi],byte 0
30
	jnz	param
30
	jnz	param
31
	mov	esi, default_filename
31
	mov	esi,default_filename
32
@@:
32
@@:
33
	lodsb
33
	lodsb
34
	stosb
34
	stosb
Line 37... Line 37...
37
param:
37
param:
Line 38... Line 38...
38
 
38
 
39
; allow user to see messages written before start
39
; allow user to see messages written before start
40
;     mov  ecx,4096
40
;	mov	ecx,4096
41
;    flush:
-
 
42
;     mov  eax,63
-
 
43
;     mov  ebx,2
41
;flush:
44
;     mcall
42
;	mcall	63,2
Line 45... Line 43...
45
;     loop flush
43
;	loop	flush
46
 
44
	
47
     mov  ecx, TMP
45
	mov	ecx,TMP
48
     xor  eax, eax
46
	xor	eax,eax
Line 49... Line 47...
49
     mov  edi, [targ]
47
	mov	edi,[targ]
50
     rep  stosb
48
	rep	stosb
Line 51... Line -...
51
 
-
 
52
     mov  [tmp1],'x'
49
 
53
     mov  [tmp2],'x'
50
	mov	[tmp1],'x'
54
 
51
	mov	[tmp2],'x'
55
     mov  eax,14
52
	
56
     mcall
53
	mcall	14
57
     and  eax,0xffff0000
-
 
58
     sub  eax,399 shl 16
-
 
59
     add  eax,399
-
 
60
     mov  [xstart],eax
-
 
61
 
54
	and	eax,0xffff0000
62
     mov  eax,48
-
 
63
     mov  ebx,3
55
	sub	eax,399 shl 16
64
     mov  ecx,sc
56
	add	eax,399
65
     mov  edx,sizeof.system_colors
57
	mov	[xstart],eax
66
     mcall
58
	mcall	48,3,sc,sizeof.system_colors
67
  if WRITE_LOG
-
 
-
 
59
if WRITE_LOG
68
     mov  esi, filename
60
	mov	esi,filename
69
     call CreateFile
61
	call	CreateFile
70
  end if
-
 
-
 
62
end if
71
 
63
;------------------------------------------------------------------------------
72
  red:
-
 
73
     call draw_window
64
red:
74
 
-
 
75
still:
-
 
76
 
-
 
77
    mov  eax,23 		; wait here for event
65
	call draw_window
78
    mov  ebx,1
66
;------------------------------------------------------------------------------
-
 
67
still:
79
    mcall
68
	mcall	23,1		; wait here for event
80
 
69
	cmp	eax,1			; redraw request ?
-
 
70
	je	red
81
    cmp  eax,1			; redraw request ?
71
 
82
    je	 red
72
	cmp	eax,2			; key in buffer ?
Line 83... Line -...
83
    cmp  eax,2			; key in buffer ?
-
 
84
    je	 key
-
 
85
    cmp  eax,3			; button in buffer ?
73
	je	key
86
    je	 button
-
 
87
 
74
 
88
    mov  eax,63
75
	cmp	eax,3			; button in buffer ?
Line 89... Line 76...
89
    mov  ebx,2
76
	je	button
90
    mcall
77
 
Line 109... Line 96...
109
     jnc  .write_to_logfile
96
	jnc	.write_to_logfile
110
  @@:
97
@@:
111
     inc  [filepos]
98
	inc	[filepos]
112
     popa
99
	popa
113
  end if
100
end if
114
 
-
 
115
    mov  ebp,[targ]
101
	mov	ebp,[targ]
116
  .no4:
102
.no4:
117
    cmp  al,13
103
	cmp	al,13
118
    jne  no13
104
	jne	no13
119
    and  dword[ebp-8],0
105
	and	[ebp-8],dword 0
120
    jmp  new_check
106
	jmp	new_check
-
 
107
;------------------------------------------
121
   no13:
108
no13:
122
    cmp  al,10
109
	cmp	al,10
123
    jne  no10
110
	jne	no10
124
    and  dword[ebp-8],0
111
	and	[ebp-8],dword 0
125
    inc  dword[ebp-4]
112
	inc	dword [ebp-4]
126
    cmp  dword[ebp-4],MAXSTRINGS
113
	cmp	[ebp-4],dword MAXSTRINGS
127
    jbe  .noypos
114
	jbe	.noypos
128
    mov  dword[ebp-4],MAXSTRINGS
115
	mov	[ebp-4],dword MAXSTRINGS
129
    lea  esi,[ebp+80]
116
	lea	esi,[ebp+80]
130
    mov  edi,ebp
117
	mov	edi,ebp
131
    mov  ecx,80*(MAXSTRINGS)
118
	mov	ecx,80*(MAXSTRINGS)
132
    cld
119
	cld
133
    rep  movsb
120
	rep	movsb
Line 141... Line 128...
141
    rep  stosb
128
	rep	stosb
142
  .noypos:
129
.noypos:
143
    mov  [targ],text2
130
	mov	[targ],text2
144
    and  [krnl_cnt],0
131
	and	[krnl_cnt],0
145
    jmp  new_check
132
	jmp	new_check
-
 
133
;------------------------------------------
146
  no10:
134
no10:
147
    cmp  ebp,text1
135
	cmp	ebp,text1
148
    je	 add2
136
	je	add2
149
		mov  ecx,[krnl_cnt]
137
	mov	ecx,[krnl_cnt]
150
		  cmp  al,[krnl_msg+ecx]
138
	cmp	al,[krnl_msg+ecx]
Line 167... Line 155...
167
    and  [krnl_cnt],0
155
	and	[krnl_cnt],0
168
  add2:
156
add2:
169
    call add_char
157
	call	add_char
Line 170... Line 158...
170
 
158
 
171
  new_check:
-
 
172
 
-
 
173
    mov  eax,63
-
 
174
    mov  ebx,2
159
new_check:
175
    mcall
-
 
176
 
160
	mcall	63,2
177
    cmp  ebx,1
161
	cmp	ebx,1
178
    je	 new_data
-
 
179
 
162
	je	new_data
180
    call draw_window
-
 
181
 
163
	call	draw_text
182
    jmp  still
-
 
-
 
164
	jmp	still
183
 
165
;------------------------------------------------------------------------------
184
  key:				; key
-
 
185
    mov  al,2		       ; just read it and ignore
166
key:
186
    mcall
167
	mcall	2
187
    cmp  ah,' '
168
	cmp	ah,' '
188
    je	 button.noclose
169
	je	button.noclose
189
    jmp  still
-
 
-
 
170
	jmp	still
190
 
171
;------------------------------------------------------------------------------
191
  button:			; button
172
button:
192
    mov  al,17		       ; get id
-
 
193
    mcall
-
 
194
 
173
	mcall	17	; get id
195
    cmp  ah,1			; button id=1 ?
174
	cmp	ah,1		; button id=1 ?
196
    jne  .noclose
-
 
197
 
175
	jne	.noclose
198
    or	 eax,-1 		; close this program
176
	or	eax,-1 		; close this program
199
    mcall
177
	mcall
200
  .noclose:
178
.noclose:
201
    xor  [vmode],1
179
	xor	[vmode],1
202
    jmp  red
-
 
-
 
180
	jmp	red
203
 
181
;------------------------------------------------------------------------------
204
add_char:
182
add_char:
205
    push esi
183
	push	esi
206
    mov  esi,[ebp-4]
184
	mov	esi,[ebp-4]
207
    imul esi,80
185
	imul	esi,80
Line 212... Line 190...
212
    jb	 .ok
190
	jb	.ok
213
    mov  dword[ebp-8],79
191
	mov	dword[ebp-8],79
214
  .ok:
192
.ok:
215
    pop  esi
193
	pop	esi
216
    ret
194
	ret
217
 
-
 
-
 
195
;------------------------------------------------------------------------------
218
;   *********************************************
196
;   *********************************************
219
;   *******  WINDOW DEFINITIONS AND DRAW ********
197
;   *******  WINDOW DEFINITIONS AND DRAW ********
220
;   *********************************************
198
;   *********************************************
221
 
-
 
222
 
-
 
223
draw_window:
199
draw_window:
224
 
-
 
225
    mov  eax,12 		   ; function 12:tell os about windowdraw
-
 
226
    mov  ebx,1			   ; 1, start of draw
200
	mcall	12,1	; 1, start of draw
227
    mcall
-
 
228
 
-
 
229
				   ; DRAW WINDOW
-
 
230
    xor  eax,eax		     ; function 0 : define and draw window
201
	xor	eax,eax		     ; function 0 : define and draw window
231
;   mov  ebx,50*65536+400          ; [x start] *65536 + [x size]
-
 
232
    mov  ebx,[xstart]
-
 
233
    mov  ecx,MAXSTRINGS*10+45	   ; [y start] *65536 + [y size]
202
	mov	ecx,MAXSTRINGS*10+45	   ; [y start] *65536 + [y size]
234
    mov  edx,[sc.work]		   ; color of work area RRGGBB,8->color gl
203
	mov	edx,[sc.work]		   ; color of work area RRGGBB,8->color gl
235
    or	 edx,0x13000000
204
	or	edx,0x13000000
236
    mov  edi,title		  ; WINDOW LABEL
-
 
237
    mcall
-
 
238
 
-
 
239
    mov  ecx,4
205
	xor	esi,esi
240
    mov  esi,[sc.work]
206
	mcall	,[xstart],,,,title
241
    mov  ebx,296 shl 16+5*6
207
	mov	ebx,296 shl 16+5*6
242
    mov  edx,3;+1 shl 30
-
 
243
    mcall 8,,<5,12>
208
	mcall	8,,<5,12>,3,[sc.work]
244
    mov  edx,[vmode]
209
	mov	edx,[vmode]
245
    lea  edx,[edx*4+duk]
210
	lea	edx,[edx*4+duk]
246
    mcall 4,<300,8>,,,4
211
	mcall	4,<300,8>,,,4
-
 
212
	call	draw_text
-
 
213
	mcall	12,2	; 2, end of draw
247
 
214
	ret
-
 
215
;------------------------------------------------------------------------------
-
 
216
draw_text:
248
    mov  ebx,15*65536+33	   ; draw info text with function 4
217
	mov	ebx,15*65536+30	   ; draw info text with function 4
249
    mov  ecx,[sc.work_text]
218
	mov	ecx,[sc.work_text]
-
 
219
	or	ecx,0x40000000
-
 
220
	mov	edi,[sc.work]
250
    mov  edx,text1
221
	mov	edx,text1
251
    cmp  [vmode],0
222
	cmp	[vmode],0
252
    je	 .kern
223
	je	.kern
253
    mov  edx,text2
224
	mov	edx,text2
254
  .kern:
225
.kern:
-
 
226
	push	ebx ecx edx
-
 
227
	mcall	9,procinfo,-1
-
 
228
	mov	eax,[ebx+42]
-
 
229
	xor	edx,edx
-
 
230
	mov	ebx,6
-
 
231
	div	ebx
-
 
232
	pop	edx ecx ebx
255
    mov  esi,80
233
	mov	esi,80
-
 
234
	cmp	eax,esi
-
 
235
	ja	@f
-
 
236
	mov	esi,eax
-
 
237
@@:
-
 
238
	cmp	esi,5
-
 
239
	ja	@f
-
 
240
	mov	esi,5
-
 
241
@@:
-
 
242
	sub	esi,4
256
    mov  eax,4
243
	mov	eax,4
257
  newline:
244
newline:
258
    mcall
245
	mcall
259
    add  ebx,10
246
	add	ebx,10
260
    add  edx,80
247
	add	edx,80
261
    cmp  [edx],byte 'x'
248
	cmp	[edx],byte 'x'
262
    jne  newline
249
	jne	newline
263
    mov  eax,12 		   ; function 12:tell os about windowdraw
-
 
264
    mov  ebx,2			   ; 2, end of draw
-
 
265
    mcall
-
 
266
 
-
 
267
    ret
250
	ret
268
 
-
 
269
 
-
 
-
 
251
;------------------------------------------------------------------------------    
270
if WRITE_LOG
252
if WRITE_LOG
271
;********************************************
253
;********************************************
272
;*  input:  esi = pointer to the file name  *
254
;*  input:  esi = pointer to the file name  *
273
;********************************************
255
;********************************************
Line 286... Line 268...
286
    jz	     .out
268
	jz	.out
287
    stc
269
	stc
288
  .out:
270
.out:
289
    popa
271
	popa
290
    ret
272
	ret
291
 
-
 
-
 
273
;------------------------------------------------
292
;********************************************
274
;********************************************
293
;*  input:  esi = pointer to the file name  *
275
;*  input:  esi = pointer to the file name  *
294
;*          edx = pointer to data buffer    *
276
;*          edx = pointer to data buffer    *
295
;*          ecx = data length               *
277
;*          ecx = data length               *
296
;********************************************
278
;********************************************
Line 311... Line 293...
311
    jz	     .out
293
	jz	.out
312
    stc
294
	stc
313
  .out:
295
.out:
314
    pop      ebx
296
	pop      ebx
315
    ret
297
	ret
316
 
-
 
317
 
-
 
-
 
298
;--------------------------------------------------
318
InfoStructure:
299
InfoStructure:
319
		     dd      0x0     ; subfunction number
300
	dd 0x0	; subfunction number
320
		     dd      0x0     ; position in the file in bytes
301
	dd 0x0	; position in the file in bytes
321
		     dd      0x0     ; upper part of the position address
302
	dd 0x0	; upper part of the position address
322
		     dd      0x0     ; number of     bytes to read
303
	dd 0x0	; number of bytes to read
Line 326... Line 307...
326
 
307
 
327
filepos  dd 0
308
filepos	dd 0
328
default_filename db '/sys/boardlog.txt',0
309
default_filename db '/sys/boardlog.txt',0
329
tmp	 db 0
310
tmp	db 0
330
end if
-
 
331
 
-
 
332
 
-
 
333
 
-
 
-
 
311
end if
334
 
312
;------------------------------------------------------------------------------
335
krnl_msg db 'K : '
313
krnl_msg db 'K : '
Line 336... Line 314...
336
duk db 'KernUser'
314
duk db 'KernUser'
Line 347... Line 325...
347
   title    db	 'Allgemeines debug- & nachrichtenboard',0
325
 title	db 'Allgemeines debug- & nachrichtenboard',0
348
end if
326
end if
349
   krnl_cnt dd 0
327
krnl_cnt	dd 0
350
   vmode dd 1
328
vmode		dd 1
351
   targ  dd text2
329
targ		dd text2
-
 
330
;------------------------------------------------------------------------------
352
I_END:
331
I_END:
-
 
332
;------------------------------------------------------------------------------
353
     offs dd ?
333
offs	dd ?
354
     flag rb 1
334
flag	rb 1
355
     rd 2
335
	rd 2
356
;     x1pos  dd ?
336
;x1pos	dd ?
357
;     y1pos  dd ?
337
;y1pos	dd ?
Line 361... Line 341...
361
;     x2pos  dd ?
341
;x2pos	dd ?
362
;     y2pos  dd ?
342
;y2pos	dd ?
363
     text2 rb 80*(MAXSTRINGS+1)
343
text2	rb 80*(MAXSTRINGS+1)
364
     tmp2  db ?
344
tmp2	db ?
365
     xstart dd ?
345
xstart	dd ?
-
 
346
 
366
     sc system_colors
347
sc system_colors
-
 
348
 
367
i_end:
349
i_end:
Line 368... Line 350...
368
 
350
 
-
 
351
filename	rb 256
-
 
352
;------------------------------------------------------------------------------ 
-
 
353
align 4
-
 
354
procinfo:
-
 
355
	rb 1024
369
filename	rb	256
356
;------------------------------------------------------------------------------ 
370
align 4
357
align 4
-
 
358
stackbuf	rb 2000h
371
stackbuf	rb	2000h
359
;------------------------------------------------------------------------------