2006-01-03 10:43:31 +01:00
|
|
|
|
;
|
|
|
|
|
; DEBUG BOARD for APPLICATIONS and KERNEL DEVELOPMENT
|
|
|
|
|
;
|
|
|
|
|
; See f63
|
|
|
|
|
;
|
|
|
|
|
; Compile with FASM for Menuet
|
|
|
|
|
;
|
2010-08-17 23:40:33 +02:00
|
|
|
|
WRITE_LOG equ 1
|
2006-08-18 15:32:18 +02:00
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
include 'lang.inc'
|
|
|
|
|
|
|
|
|
|
use32
|
2010-08-17 23:40:33 +02:00
|
|
|
|
org 0x0
|
|
|
|
|
db 'MENUET01' ; 8 byte id
|
|
|
|
|
dd 0x01 ; header version
|
|
|
|
|
dd START ; start of code
|
|
|
|
|
dd I_END ; size of image
|
2011-07-05 14:10:36 +02:00
|
|
|
|
dd mem ; memory for app
|
|
|
|
|
dd mem ; esp
|
2011-07-05 13:50:10 +02:00
|
|
|
|
dd filename , 0x0 ; I_Param , I_Icon
|
2011-01-18 12:56:31 +01:00
|
|
|
|
include '../../../macros.inc'
|
2006-08-18 15:32:18 +02:00
|
|
|
|
include 'debug.inc'
|
|
|
|
|
purge newline
|
2006-01-03 10:43:31 +01:00
|
|
|
|
MAXSTRINGS = 16
|
2006-08-18 15:32:18 +02:00
|
|
|
|
TMP = 80*(MAXSTRINGS+1)
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
START: ; start of execution
|
2011-07-05 13:50:10 +02:00
|
|
|
|
mov edi, filename
|
|
|
|
|
cmp byte [edi], 0
|
|
|
|
|
jnz param
|
|
|
|
|
mov esi, default_filename
|
|
|
|
|
@@:
|
|
|
|
|
lodsb
|
|
|
|
|
stosb
|
|
|
|
|
test al, al
|
|
|
|
|
jnz @b
|
|
|
|
|
param:
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2010-01-04 00:41:11 +01:00
|
|
|
|
; allow user to see messages written before start
|
|
|
|
|
; mov ecx,4096
|
|
|
|
|
; flush:
|
|
|
|
|
; mov eax,63
|
|
|
|
|
; mov ebx,2
|
|
|
|
|
; mcall
|
|
|
|
|
; loop flush
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov ecx, TMP
|
2006-01-03 10:43:31 +01:00
|
|
|
|
xor eax, eax
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov edi, [targ]
|
2006-01-03 10:43:31 +01:00
|
|
|
|
rep stosb
|
|
|
|
|
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov [tmp1],'x'
|
|
|
|
|
mov [tmp2],'x'
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
mov eax,14
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2006-01-03 10:43:31 +01:00
|
|
|
|
and eax,0xffff0000
|
2006-08-18 15:32:18 +02:00
|
|
|
|
sub eax,399 shl 16
|
|
|
|
|
add eax,399
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov [xstart],eax
|
2007-04-02 14:44:47 +02:00
|
|
|
|
|
|
|
|
|
mov eax,48
|
|
|
|
|
mov ebx,3
|
|
|
|
|
mov ecx,sc
|
|
|
|
|
mov edx,sizeof.system_colors
|
|
|
|
|
mcall
|
2010-08-17 23:40:33 +02:00
|
|
|
|
if WRITE_LOG
|
|
|
|
|
mov esi, filename
|
|
|
|
|
call CreateFile
|
|
|
|
|
end if
|
2007-04-02 14:44:47 +02:00
|
|
|
|
|
2006-08-18 15:32:18 +02:00
|
|
|
|
red:
|
2006-01-03 10:43:31 +01:00
|
|
|
|
call draw_window
|
|
|
|
|
|
|
|
|
|
still:
|
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
mov eax,23 ; wait here for event
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov ebx,1
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
cmp eax,1 ; redraw request ?
|
|
|
|
|
je red
|
|
|
|
|
cmp eax,2 ; key in buffer ?
|
|
|
|
|
je key
|
|
|
|
|
cmp eax,3 ; button in buffer ?
|
|
|
|
|
je button
|
2007-04-02 14:44:47 +02:00
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov eax,63
|
|
|
|
|
mov ebx,2
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
cmp ebx,1
|
|
|
|
|
jne still
|
2010-08-17 23:40:33 +02:00
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
new_data:
|
2010-08-17 23:40:33 +02:00
|
|
|
|
if WRITE_LOG
|
|
|
|
|
pusha
|
|
|
|
|
mov [tmp], al
|
|
|
|
|
mov edx, tmp
|
|
|
|
|
mov ecx, 1
|
|
|
|
|
mov esi, filename
|
|
|
|
|
.write_to_logfile:
|
|
|
|
|
call WriteToFile
|
|
|
|
|
cmp eax, 5
|
|
|
|
|
jne @f
|
|
|
|
|
mov esi, filename
|
|
|
|
|
mov [filepos], 0
|
|
|
|
|
call CreateFile
|
|
|
|
|
jmp .write_to_logfile
|
|
|
|
|
@@:
|
|
|
|
|
inc [filepos]
|
|
|
|
|
popa
|
|
|
|
|
end if
|
|
|
|
|
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov ebp,[targ]
|
|
|
|
|
.no4:
|
2006-01-03 10:43:31 +01:00
|
|
|
|
cmp al,13
|
|
|
|
|
jne no13
|
2006-08-18 15:32:18 +02:00
|
|
|
|
and dword[ebp-8],0
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jmp new_check
|
|
|
|
|
no13:
|
|
|
|
|
cmp al,10
|
|
|
|
|
jne no10
|
2011-02-16 09:47:28 +01:00
|
|
|
|
and dword[ebp-8],0
|
2006-08-18 15:32:18 +02:00
|
|
|
|
inc dword[ebp-4]
|
|
|
|
|
cmp dword[ebp-4],MAXSTRINGS
|
|
|
|
|
jbe .noypos
|
|
|
|
|
mov dword[ebp-4],MAXSTRINGS
|
|
|
|
|
lea esi,[ebp+80]
|
|
|
|
|
mov edi,ebp
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov ecx,80*(MAXSTRINGS)
|
|
|
|
|
cld
|
|
|
|
|
rep movsb
|
|
|
|
|
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov esi,[ebp-4]
|
2006-01-03 10:43:31 +01:00
|
|
|
|
imul esi,80
|
2006-08-18 15:32:18 +02:00
|
|
|
|
add esi,[ebp-8]
|
|
|
|
|
add esi,ebp
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov ecx,80
|
|
|
|
|
xor al,al
|
|
|
|
|
rep stosb
|
2006-08-18 15:32:18 +02:00
|
|
|
|
.noypos:
|
|
|
|
|
mov [targ],text2
|
|
|
|
|
and [krnl_cnt],0
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jmp new_check
|
|
|
|
|
no10:
|
2006-08-18 15:32:18 +02:00
|
|
|
|
cmp ebp,text1
|
2010-08-17 23:40:33 +02:00
|
|
|
|
je add2
|
|
|
|
|
mov ecx,[krnl_cnt]
|
2006-08-18 15:32:18 +02:00
|
|
|
|
cmp al,[krnl_msg+ecx]
|
2010-08-17 23:40:33 +02:00
|
|
|
|
jne .noknl
|
2006-08-18 15:32:18 +02:00
|
|
|
|
inc [krnl_cnt]
|
2010-08-17 23:40:33 +02:00
|
|
|
|
cmp [krnl_cnt],4
|
|
|
|
|
jne new_check
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov [targ],text1
|
2010-08-17 23:40:33 +02:00
|
|
|
|
.noknl:
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov ebp,[targ]
|
|
|
|
|
jecxz .add
|
|
|
|
|
push eax
|
|
|
|
|
mov esi,krnl_msg
|
|
|
|
|
.l1:
|
|
|
|
|
lodsb
|
|
|
|
|
call add_char
|
|
|
|
|
loop .l1
|
|
|
|
|
pop eax
|
|
|
|
|
.add:
|
|
|
|
|
and [krnl_cnt],0
|
|
|
|
|
add2:
|
|
|
|
|
call add_char
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
new_check:
|
|
|
|
|
|
|
|
|
|
mov eax,63
|
|
|
|
|
mov ebx,2
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
cmp ebx,1
|
2010-08-17 23:40:33 +02:00
|
|
|
|
je new_data
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
call draw_window
|
|
|
|
|
|
|
|
|
|
jmp still
|
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
key: ; key
|
|
|
|
|
mov al,2 ; just read it and ignore
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2006-08-18 15:32:18 +02:00
|
|
|
|
cmp ah,' '
|
2011-07-05 14:10:36 +02:00
|
|
|
|
je button.noclose
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jmp still
|
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
button: ; button
|
|
|
|
|
mov al,17 ; get id
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
cmp ah,1 ; button id=1 ?
|
2006-08-18 15:32:18 +02:00
|
|
|
|
jne .noclose
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
or eax,-1 ; close this program
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2006-08-18 15:32:18 +02:00
|
|
|
|
.noclose:
|
2011-07-05 14:10:36 +02:00
|
|
|
|
xor [vmode],1
|
2006-08-18 15:32:18 +02:00
|
|
|
|
jmp red
|
|
|
|
|
|
|
|
|
|
add_char:
|
|
|
|
|
push esi
|
|
|
|
|
mov esi,[ebp-4]
|
|
|
|
|
imul esi,80
|
|
|
|
|
add esi,[ebp-8]
|
|
|
|
|
mov [ebp+esi],al
|
|
|
|
|
inc dword[ebp-8]
|
|
|
|
|
cmp dword[ebp-8],80
|
2010-08-17 23:40:33 +02:00
|
|
|
|
jb .ok
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov dword[ebp-8],79
|
|
|
|
|
.ok:
|
|
|
|
|
pop esi
|
|
|
|
|
ret
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
; *********************************************
|
|
|
|
|
; ******* WINDOW DEFINITIONS AND DRAW ********
|
|
|
|
|
; *********************************************
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
draw_window:
|
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
mov eax,12 ; function 12:tell os about windowdraw
|
|
|
|
|
mov ebx,1 ; 1, start of draw
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
; DRAW WINDOW
|
|
|
|
|
xor eax,eax ; function 0 : define and draw window
|
2006-01-03 10:43:31 +01:00
|
|
|
|
; mov ebx,50*65536+400 ; [x start] *65536 + [x size]
|
|
|
|
|
mov ebx,[xstart]
|
2010-08-17 23:40:33 +02:00
|
|
|
|
mov ecx,MAXSTRINGS*10+45 ; [y start] *65536 + [y size]
|
|
|
|
|
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
|
|
|
|
or edx,0x13000000
|
|
|
|
|
mov edi,title ; WINDOW LABEL
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2010-08-17 23:40:33 +02:00
|
|
|
|
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov ecx,4
|
|
|
|
|
mov esi,[sc.work]
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mov ebx,296 shl 16+5*6
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov edx,3;+1 shl 30
|
|
|
|
|
mcall 8,,<5,12>
|
|
|
|
|
mov edx,[vmode]
|
|
|
|
|
lea edx,[edx*4+duk]
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall 4,<300,8>,,,4
|
2006-08-18 15:32:18 +02:00
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
mov ebx,15*65536+33 ; draw info text with function 4
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov ecx,[sc.work_text]
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov edx,text1
|
|
|
|
|
cmp [vmode],0
|
2010-08-17 23:40:33 +02:00
|
|
|
|
je .kern
|
2006-08-18 15:32:18 +02:00
|
|
|
|
mov edx,text2
|
|
|
|
|
.kern:
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov esi,80
|
|
|
|
|
mov eax,4
|
2007-04-02 14:44:47 +02:00
|
|
|
|
newline:
|
|
|
|
|
mcall
|
2006-01-03 10:43:31 +01:00
|
|
|
|
add ebx,10
|
|
|
|
|
add edx,80
|
|
|
|
|
cmp [edx],byte 'x'
|
|
|
|
|
jne newline
|
2010-08-17 23:40:33 +02:00
|
|
|
|
mov eax,12 ; function 12:tell os about windowdraw
|
|
|
|
|
mov ebx,2 ; 2, end of draw
|
2007-04-02 14:44:47 +02:00
|
|
|
|
mcall
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
ret
|
|
|
|
|
|
2010-08-17 23:40:33 +02:00
|
|
|
|
|
|
|
|
|
if WRITE_LOG
|
|
|
|
|
;********************************************
|
|
|
|
|
;* input: esi = pointer to the file name *
|
|
|
|
|
;********************************************
|
|
|
|
|
|
|
|
|
|
CreateFile:
|
|
|
|
|
pusha
|
|
|
|
|
mov dword [InfoStructure], 2 ; create file
|
|
|
|
|
mov dword [InfoStructure+4], 0 ; reserved
|
|
|
|
|
mov dword [InfoStructure+8], 0 ; reserved
|
|
|
|
|
mov dword [InfoStructure+12], 0 ; 0 bytes to write (just create)
|
|
|
|
|
mov dword [InfoStructure+16], 0 ; NULL data pointer (no data)
|
|
|
|
|
mov dword [InfoStructure+20], 0 ; reserved
|
|
|
|
|
mov dword [InfoStructure+21], esi ; pointer to the file name
|
|
|
|
|
mcall 70, InfoStructure
|
|
|
|
|
clc
|
|
|
|
|
test eax, eax
|
|
|
|
|
jz .out
|
|
|
|
|
stc
|
|
|
|
|
.out:
|
|
|
|
|
popa
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
;********************************************
|
|
|
|
|
;* input: esi = pointer to the file name *
|
|
|
|
|
;* edx = pointer to data buffer *
|
|
|
|
|
;* ecx = data length *
|
|
|
|
|
;********************************************
|
|
|
|
|
|
|
|
|
|
WriteToFile:
|
|
|
|
|
push ebx
|
|
|
|
|
mov dword [InfoStructure], 3 ; write to file
|
|
|
|
|
mov eax, [filepos]
|
|
|
|
|
mov dword [InfoStructure+4], eax ; lower position addr
|
|
|
|
|
mov dword [InfoStructure+8], 0 ; upper position addr (0 for FAT)
|
|
|
|
|
mov dword [InfoStructure+12], ecx ; number of bytes to write
|
|
|
|
|
mov dword [InfoStructure+16], edx ; pointer to data buffer
|
|
|
|
|
mov dword [InfoStructure+20], 0 ; reserved
|
|
|
|
|
mov dword [InfoStructure+21], esi ; pointer to the file name
|
|
|
|
|
mcall 70, InfoStructure
|
|
|
|
|
clc
|
|
|
|
|
test eax, eax
|
|
|
|
|
jz .out
|
|
|
|
|
stc
|
|
|
|
|
.out:
|
|
|
|
|
pop ebx
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InfoStructure:
|
|
|
|
|
dd 0x0 ; subfunction number
|
|
|
|
|
dd 0x0 ; position in the file in bytes
|
|
|
|
|
dd 0x0 ; upper part of the position address
|
|
|
|
|
dd 0x0 ; number of bytes to read
|
|
|
|
|
dd 0x0 ; pointer to the buffer to write data
|
|
|
|
|
db 0
|
|
|
|
|
dd 0 ; pointer to the filename
|
|
|
|
|
|
|
|
|
|
filepos dd 0
|
2011-07-05 13:50:10 +02:00
|
|
|
|
default_filename db '/sys/boardlog.txt',0
|
2010-08-17 23:40:33 +02:00
|
|
|
|
tmp db 0
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-08-18 15:32:18 +02:00
|
|
|
|
|
|
|
|
|
krnl_msg db 'K : '
|
2011-07-05 14:10:36 +02:00
|
|
|
|
duk db 'KernUser'
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
; DATA AREA
|
|
|
|
|
|
2006-08-18 15:32:18 +02:00
|
|
|
|
; 11,11 > 0,-1
|
|
|
|
|
; 5,11 > 0,-1
|
2006-01-03 10:43:31 +01:00
|
|
|
|
if lang eq ru
|
2010-08-17 23:40:33 +02:00
|
|
|
|
title db '<27><>᪠ <20>⫠<EFBFBD><E2ABA0><EFBFBD> <20> ᮮ<>饭<EFBFBD><E9A5AD>',0
|
mv, gifview, jpegview: modified to use function 70
tinypad2: modified for new sysxtree
kernel, mv, board, calendar, cmd, copy2, cpu, end, icon, mhc, pcidev:
german translation from derPENGUIN
git-svn-id: svn://kolibrios.org@135 a494cfbc-eb01-0410-851d-a64ba20cac60
2006-08-25 15:06:57 +02:00
|
|
|
|
else if lang eq en
|
2010-08-17 23:40:33 +02:00
|
|
|
|
title db 'General debug & message board',0
|
mv, gifview, jpegview: modified to use function 70
tinypad2: modified for new sysxtree
kernel, mv, board, calendar, cmd, copy2, cpu, end, icon, mhc, pcidev:
german translation from derPENGUIN
git-svn-id: svn://kolibrios.org@135 a494cfbc-eb01-0410-851d-a64ba20cac60
2006-08-25 15:06:57 +02:00
|
|
|
|
else
|
2010-08-17 23:40:33 +02:00
|
|
|
|
title db 'Allgemeines debug- & nachrichtenboard',0
|
2006-01-03 10:43:31 +01:00
|
|
|
|
end if
|
2006-11-02 15:18:23 +01:00
|
|
|
|
krnl_cnt dd 0
|
2010-08-17 23:40:33 +02:00
|
|
|
|
vmode dd 1
|
2006-08-18 15:32:18 +02:00
|
|
|
|
targ dd text2
|
2006-01-03 10:43:31 +01:00
|
|
|
|
I_END:
|
2006-08-18 15:32:18 +02:00
|
|
|
|
offs dd ?
|
|
|
|
|
flag rb 1
|
|
|
|
|
rd 2
|
|
|
|
|
; x1pos dd ?
|
|
|
|
|
; y1pos dd ?
|
|
|
|
|
text1 rb 80*(MAXSTRINGS+1)
|
|
|
|
|
tmp1 db ?
|
|
|
|
|
rd 2
|
|
|
|
|
; x2pos dd ?
|
|
|
|
|
; y2pos dd ?
|
|
|
|
|
text2 rb 80*(MAXSTRINGS+1)
|
|
|
|
|
tmp2 db ?
|
2006-01-03 10:43:31 +01:00
|
|
|
|
xstart dd ?
|
2006-08-18 15:32:18 +02:00
|
|
|
|
sc system_colors
|
|
|
|
|
i_end:
|
2011-07-05 13:50:10 +02:00
|
|
|
|
|
|
|
|
|
filename rb 256
|
2011-07-05 14:10:36 +02:00
|
|
|
|
align 4
|
|
|
|
|
stackbuf rb 2000h
|
|
|
|
|
mem:
|