722650c58d
git-svn-id: svn://kolibrios.org@6733 a494cfbc-eb01-0410-851d-a64ba20cac60
300 lines
4.0 KiB
PHP
300 lines
4.0 KiB
PHP
|
|
txt_zv db '*',0
|
|
txt_sp db ' ',0
|
|
txt_buf db '1234',0
|
|
rd 1
|
|
|
|
buf_param rb 80
|
|
|
|
macro cStr dest,txt
|
|
{
|
|
local .end_t
|
|
local .m_txt
|
|
jmp .end_t
|
|
align 4
|
|
.m_txt db txt,0
|
|
align 4
|
|
.end_t:
|
|
if dest eq
|
|
mov eax,.m_txt
|
|
else
|
|
mov dest,.m_txt
|
|
end if
|
|
}
|
|
|
|
align 4
|
|
proc f_png_warning, h:dword, m_txt:dword
|
|
stdcall hex_in_str,txt_buf,[h],5
|
|
mov byte[txt_buf+5],0
|
|
stdcall dbg_print,txt_buf,[m_txt]
|
|
ret
|
|
endp
|
|
|
|
align 4
|
|
proc f_png_error, h:dword, m_txt:dword
|
|
stdcall hex_in_str,txt_buf,[h],5
|
|
mov byte[txt_buf+5],0
|
|
stdcall dbg_print,txt_buf,[m_txt]
|
|
ret
|
|
endp
|
|
|
|
align 4
|
|
proc f_png_debug, n:dword, m_txt:dword
|
|
stdcall dbg_print,txt_sp,[m_txt]
|
|
ret
|
|
endp
|
|
|
|
align 4
|
|
proc dbg_print, fun:dword, mes:dword
|
|
pushad
|
|
mov eax,SF_BOARD
|
|
mov ebx,SSF_DEBUG_WRITE
|
|
|
|
mov esi,[fun]
|
|
cmp esi,0
|
|
je .end0
|
|
@@:
|
|
mov cl,byte[esi]
|
|
int 0x40
|
|
inc esi
|
|
cmp byte[esi],0
|
|
jne @b
|
|
mov cl,':'
|
|
int 0x40
|
|
mov cl,' '
|
|
int 0x40
|
|
.end0:
|
|
mov esi,[mes]
|
|
cmp esi,0
|
|
je .end_f
|
|
@@:
|
|
mov cl,byte[esi]
|
|
cmp cl,0
|
|
je .end_f
|
|
int 0x40
|
|
inc esi
|
|
jmp @b
|
|
.end_f:
|
|
popad
|
|
ret
|
|
endp
|
|
|
|
;input:
|
|
; zif - 1...8
|
|
align 4
|
|
proc hex_in_str, buf:dword,val:dword,zif:dword
|
|
pushad
|
|
mov edi,dword[buf]
|
|
mov ecx,dword[zif]
|
|
add edi,ecx
|
|
dec edi
|
|
mov ebx,dword[val]
|
|
|
|
.cycle:
|
|
mov al,bl
|
|
and al,0xf
|
|
cmp al,10
|
|
jl @f
|
|
add al,'a'-'0'-10
|
|
@@:
|
|
add al,'0'
|
|
mov byte[edi],al
|
|
dec edi
|
|
shr ebx,4
|
|
loop .cycle
|
|
popad
|
|
ret
|
|
endp
|
|
|
|
;---
|
|
|
|
macro png_warning h,txt
|
|
{
|
|
if txt eqtype ''
|
|
local .end_t
|
|
local .m_txt
|
|
jmp .end_t
|
|
.m_txt db txt,13,10,0
|
|
.end_t:
|
|
stdcall f_png_warning,h,.m_txt
|
|
else
|
|
stdcall f_png_warning,h,txt
|
|
push eax ebx ecx
|
|
mcall SF_BOARD,SSF_DEBUG_WRITE,13
|
|
mcall ,,10
|
|
pop ecx ebx eax
|
|
end if
|
|
}
|
|
|
|
macro png_app_warning h,txt
|
|
{
|
|
png_warning h,<txt>
|
|
}
|
|
|
|
macro png_error h,txt
|
|
{
|
|
if txt eqtype ''
|
|
local .end_t
|
|
local .m_txt
|
|
jmp .end_t
|
|
.m_txt db txt,13,10,0
|
|
.end_t:
|
|
stdcall f_png_error,h,.m_txt
|
|
else
|
|
stdcall f_png_error,h,txt
|
|
push eax ebx ecx
|
|
mcall SF_BOARD,SSF_DEBUG_WRITE,13
|
|
mcall ,,10
|
|
pop ecx ebx eax
|
|
end if
|
|
}
|
|
|
|
macro png_debug n,txt
|
|
{
|
|
if DEBUG eq 1
|
|
local .end_t
|
|
local .m_txt
|
|
jmp .end_t
|
|
.m_txt db txt,13,10,0
|
|
align 4
|
|
.end_t:
|
|
stdcall f_png_debug,n,.m_txt
|
|
end if
|
|
}
|
|
|
|
macro png_debug1 n,fmt,p1
|
|
{
|
|
if DEBUG eq 1
|
|
local .end_t
|
|
|
|
if p1 eqtype ''
|
|
local .m_txt1
|
|
local .m_txt2
|
|
jmp .end_t
|
|
.m_txt1 db fmt,0
|
|
.m_txt2 db p1,13,10,0
|
|
align 4
|
|
.end_t:
|
|
stdcall dbg_print,.m_txt1,.m_txt2
|
|
|
|
else
|
|
local .m_fmt
|
|
jmp .end_t
|
|
.m_fmt db fmt,13,10,0
|
|
align 4
|
|
.end_t:
|
|
stdcall str_format_dbg, buf_param,.m_fmt,p1
|
|
|
|
end if
|
|
end if
|
|
}
|
|
|
|
;output:
|
|
; eax = strlen
|
|
align 4
|
|
proc strlen, str1:dword
|
|
mov eax,[str1]
|
|
@@:
|
|
cmp byte[eax],0
|
|
je @f
|
|
inc eax
|
|
jmp @b
|
|
@@:
|
|
sub eax,[str1]
|
|
ret
|
|
endp
|
|
|
|
align 4
|
|
proc str_format_dbg, buf:dword, fmt:dword, p1:dword
|
|
pushad
|
|
mov esi,[fmt]
|
|
mov edi,[buf]
|
|
mov ecx,80-1
|
|
.cycle0:
|
|
lodsb
|
|
cmp al,'%'
|
|
jne .no_param
|
|
lodsb
|
|
dec ecx
|
|
cmp al,0
|
|
je .cycle0end
|
|
cmp al,'d'
|
|
je @f
|
|
cmp al,'u'
|
|
je @f
|
|
cmp al,'l'
|
|
je .end1
|
|
jmp .end0
|
|
.end1: ;%lu %lx
|
|
lodsb
|
|
dec ecx
|
|
cmp al,'u'
|
|
jne .end0
|
|
@@:
|
|
mov eax,[p1]
|
|
stdcall convert_int_to_str,ecx
|
|
xor al,al
|
|
repne scasb
|
|
dec edi
|
|
.end0:
|
|
loop .cycle0
|
|
.no_param:
|
|
stosb
|
|
cmp al,0
|
|
je .cycle0end
|
|
loop .cycle0
|
|
.cycle0end:
|
|
xor al,al
|
|
stosb
|
|
stdcall dbg_print,txt_sp,[buf]
|
|
popad
|
|
ret
|
|
endp
|
|
|
|
;input:
|
|
; eax - число
|
|
; edi - буфер для строки
|
|
; len - длинна буфера
|
|
;output:
|
|
align 4
|
|
proc convert_int_to_str, len:dword
|
|
pushad
|
|
mov esi,[len]
|
|
add esi,edi
|
|
dec esi
|
|
call .str
|
|
popad
|
|
ret
|
|
endp
|
|
|
|
align 4
|
|
.str:
|
|
mov ecx,0x0a
|
|
cmp eax,ecx
|
|
jb @f
|
|
xor edx,edx
|
|
div ecx
|
|
push edx
|
|
call .str
|
|
pop eax
|
|
@@:
|
|
cmp edi,esi
|
|
jge @f
|
|
or al,0x30
|
|
stosb
|
|
mov byte[edi],0
|
|
@@:
|
|
ret
|
|
|
|
macro std_png_image_error n,txt
|
|
{
|
|
local .end_t
|
|
local .m_txt
|
|
jmp .end_t
|
|
.m_txt db txt,13,10,0
|
|
align 4
|
|
.end_t:
|
|
stdcall png_image_error,n,.m_txt
|
|
}
|
|
|