forked from KolibriOS/kolibrios
new font code
git-svn-id: svn://kolibrios.org@5665 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
99225de60a
commit
1284ae36ca
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
kernel/trunk/gui/charUni.mt
Normal file
BIN
kernel/trunk/gui/charUni.mt
Normal file
Binary file not shown.
@ -7,230 +7,698 @@
|
|||||||
|
|
||||||
$Revision$
|
$Revision$
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
dtext_asciiz_esi:
|
||||||
align 4
|
btr ecx, 31
|
||||||
dtext_asciiz_esi: ; for skins title out
|
|
||||||
push eax
|
|
||||||
xor eax, eax
|
|
||||||
inc eax
|
|
||||||
jmp dtext.1
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
align 4
|
|
||||||
dtext:
|
dtext:
|
||||||
; ebx x & y
|
; edx -> string
|
||||||
; ecx style ( 0xX0000000 ) & color ( 0x00RRGGBB )
|
; esi = number of characters
|
||||||
; X = ABnnb:
|
; ebx = output coordinates XXXXYYYY h
|
||||||
; nn = font
|
; ecx = char color and flags flRRGGBB h
|
||||||
; A = 0 <=> output esi characters; otherwise output ASCIIZ string
|
; fl = ZBFFRSSS b
|
||||||
; B = 1 <=> fill background with color eax
|
; Z=1: edx -> zero terminated string, esi = ?
|
||||||
; edx start of text
|
; B=1: fill background with color eax
|
||||||
; edi 1 force or user area for redirect
|
; R=1: edi -> user area for redirect
|
||||||
push eax
|
; FF=3: UTF-8 8x16, FF=2: UTF-16LE 8x16, FF=0: 866 6x9
|
||||||
|
; SSS = (font multiplier)-1
|
||||||
|
; edi=1: force output
|
||||||
|
and eax, 0xFFFFFF
|
||||||
|
bt ecx, 30
|
||||||
|
jc @f
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
;--------------------------------------
|
dec eax
|
||||||
align 4
|
@@:
|
||||||
.1:
|
pushd 0 0 0 eax
|
||||||
pushad
|
movsx eax, bx
|
||||||
movsx eax, bx ; eax=y
|
sar ebx, 16
|
||||||
sar ebx, 16 ; ebx=x
|
push eax ebx edi
|
||||||
xchg eax, ebx ; eax=x, ebx=y
|
bt ecx, 27
|
||||||
cmp esi, 255
|
jc .redirect
|
||||||
jb .loop
|
mov ebp, [_display.width]
|
||||||
|
xor edi, edi
|
||||||
mov esi, 255
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.loop:
|
|
||||||
test ecx, ecx
|
|
||||||
js .test_asciiz
|
|
||||||
|
|
||||||
dec esi
|
|
||||||
js .end
|
|
||||||
|
|
||||||
jmp @f
|
jmp @f
|
||||||
;--------------------------------------
|
.redirect:
|
||||||
align 4
|
mov ebp, [edi]
|
||||||
.test_asciiz:
|
add edi, 8
|
||||||
cmp byte [edx], 0
|
|
||||||
jz .end
|
|
||||||
|
|
||||||
cmp byte [esp+28], 1
|
|
||||||
jne @f
|
|
||||||
|
|
||||||
dec esi
|
|
||||||
js .end
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
@@:
|
@@:
|
||||||
inc edx
|
shl ebp, 2
|
||||||
pushad
|
imul eax, ebp
|
||||||
movzx edx, byte [edx-1]
|
shl ebx, 2
|
||||||
test ecx, 0x10000000
|
|
||||||
jnz .font2
|
|
||||||
|
|
||||||
mov esi, 9
|
|
||||||
lea ebp, [FONT_I+8*edx+edx]
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.symloop1:
|
|
||||||
mov dl, byte [ebp]
|
|
||||||
or dl, 1 shl 6
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.pixloop1:
|
|
||||||
shr dl, 1
|
|
||||||
jz .pixloop1end
|
|
||||||
|
|
||||||
jnc .nopix
|
|
||||||
|
|
||||||
test ecx, 0x08000000 ; redirect the output to the user area
|
|
||||||
jz @f
|
|
||||||
|
|
||||||
call draw_text_to_user_area
|
|
||||||
jmp .pixloop1cont
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
@@:
|
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
|
||||||
; call [putpixel]
|
|
||||||
call __sys_putpixel
|
|
||||||
jmp .pixloop1cont
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.nopix:
|
|
||||||
test ecx, 0x40000000
|
|
||||||
jz .pixloop1cont
|
|
||||||
|
|
||||||
push ecx
|
|
||||||
mov ecx, [esp+4+20h+20h]
|
|
||||||
|
|
||||||
test ecx, 0x08000000 ; redirect the output to the user area
|
|
||||||
jz @f
|
|
||||||
|
|
||||||
call draw_text_to_user_area
|
|
||||||
pop ecx
|
|
||||||
jmp .pixloop1cont
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
@@:
|
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
|
||||||
; call [putpixel]
|
|
||||||
call __sys_putpixel
|
|
||||||
pop ecx
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.pixloop1cont:
|
|
||||||
inc eax
|
|
||||||
jmp .pixloop1
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.pixloop1end:
|
|
||||||
sub eax, 6
|
|
||||||
inc ebx
|
|
||||||
inc ebp
|
|
||||||
dec esi
|
|
||||||
jnz .symloop1
|
|
||||||
|
|
||||||
popad
|
|
||||||
add eax, 6
|
|
||||||
jmp .loop
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.font2:
|
|
||||||
add edx, edx
|
|
||||||
lea ebp, [FONT_II+4*edx+edx+1]
|
|
||||||
push 9
|
|
||||||
movzx esi, byte [ebp-1]
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.symloop2:
|
|
||||||
mov dl, byte [ebp]
|
|
||||||
push esi
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.pixloop2:
|
|
||||||
shr dl, 1
|
|
||||||
jnc .nopix2
|
|
||||||
|
|
||||||
test ecx, 0x08000000 ; redirect the output to the user area
|
|
||||||
jz @f
|
|
||||||
|
|
||||||
call draw_text_to_user_area
|
|
||||||
jmp .pixloop2cont
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
@@:
|
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
|
||||||
; call [putpixel]
|
|
||||||
call __sys_putpixel
|
|
||||||
jmp .pixloop2cont
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.nopix2:
|
|
||||||
test ecx, 0x40000000
|
|
||||||
jz .pixloop2cont
|
|
||||||
|
|
||||||
push ecx
|
|
||||||
mov ecx, [esp+12+20h+20h]
|
|
||||||
|
|
||||||
test ecx, 0x08000000 ; redirect the output to the user area
|
|
||||||
jz @f
|
|
||||||
|
|
||||||
call draw_text_to_user_area
|
|
||||||
pop ecx
|
|
||||||
jmp .pixloop2cont
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
@@:
|
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
|
||||||
; call [putpixel]
|
|
||||||
call __sys_putpixel
|
|
||||||
pop ecx
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.pixloop2cont:
|
|
||||||
inc eax
|
|
||||||
dec esi
|
|
||||||
jnz .pixloop2
|
|
||||||
|
|
||||||
pop esi
|
|
||||||
sub eax, esi
|
|
||||||
inc ebx
|
|
||||||
inc ebp
|
|
||||||
dec dword [esp]
|
|
||||||
jnz .symloop2
|
|
||||||
|
|
||||||
pop eax
|
|
||||||
add dword [esp+28], esi
|
|
||||||
popad
|
|
||||||
jmp .loop
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.end:
|
|
||||||
popad
|
|
||||||
pop eax
|
|
||||||
ret
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; eax = x coordinate
|
|
||||||
; ebx = y coordinate
|
|
||||||
; ecx = ?? RR GG BB
|
|
||||||
; edi = user area
|
|
||||||
align 4
|
|
||||||
draw_text_to_user_area:
|
|
||||||
pushad
|
|
||||||
imul ebx, [edi+0]
|
|
||||||
add eax, ebx
|
add eax, ebx
|
||||||
shl eax, 2
|
js .ret
|
||||||
add eax, edi
|
add edi, eax ; linear address (32bit)
|
||||||
add eax, 8
|
mov eax, ecx
|
||||||
and ecx, 0xffffff
|
mov ebx, ecx
|
||||||
or ecx, 0xff000000 ; not transparent
|
test ecx, ecx
|
||||||
mov [eax], ecx ; store pixel
|
jns @f
|
||||||
popad
|
mov esi, 256
|
||||||
|
@@:
|
||||||
|
shr ecx, 24
|
||||||
|
and cl, 7
|
||||||
|
inc ecx
|
||||||
|
push ebp ecx esi
|
||||||
|
mov esi, edx ; -> string
|
||||||
|
or eax, 0xFF000000
|
||||||
|
bt ebx, 27
|
||||||
|
jc .bufferReady
|
||||||
|
mov eax, 9
|
||||||
|
bt ebx, 29
|
||||||
|
jnc @f
|
||||||
|
add eax, 7
|
||||||
|
@@:
|
||||||
|
imul eax, ecx
|
||||||
|
mov [esp+32], eax
|
||||||
|
imul ebp, eax
|
||||||
|
stdcall kernel_alloc, ebp
|
||||||
|
mov ecx, ebp
|
||||||
|
shr ecx, 2
|
||||||
|
mov [esp+36], eax
|
||||||
|
sub edi, eax
|
||||||
|
mov edx, eax
|
||||||
|
mov eax, [esp+24]
|
||||||
|
cmp eax, -1
|
||||||
|
jnz .background
|
||||||
|
mov [esp+28], edi
|
||||||
|
.background:
|
||||||
|
mov edi, edx
|
||||||
|
rep stosd
|
||||||
|
mov edi, edx
|
||||||
|
mov eax, ebx
|
||||||
|
and eax, 0xFFFFFF
|
||||||
|
.bufferReady:
|
||||||
|
mov ebp, eax
|
||||||
|
xor edx, edx
|
||||||
|
bt ebx, 29
|
||||||
|
jnc .draw866
|
||||||
|
bt ebx, 28
|
||||||
|
jc .drawUTF8
|
||||||
|
|
||||||
|
; char counter +0
|
||||||
|
fontMultiplier = 4
|
||||||
|
widthX = 8
|
||||||
|
; edi +12
|
||||||
|
; X +16
|
||||||
|
; Y +20
|
||||||
|
; background +24
|
||||||
|
deltaToScreen = 28
|
||||||
|
; temp buffer height +32
|
||||||
|
; temp buffer +36
|
||||||
|
|
||||||
|
.drawUTF16:
|
||||||
|
dec dword [esp]
|
||||||
|
js .done
|
||||||
|
xor ebx, ebx
|
||||||
|
mov bx, [esi]
|
||||||
|
test ebx, ebx
|
||||||
|
jz .done
|
||||||
|
inc esi
|
||||||
|
inc esi
|
||||||
|
cmp bx, 1419
|
||||||
|
jc @f
|
||||||
|
xor ebx, ebx
|
||||||
|
@@:
|
||||||
|
pushd esi edi 16
|
||||||
|
shl ebx, 4
|
||||||
|
add ebx, fontUni
|
||||||
|
mov esi, [esp+12+fontMultiplier]
|
||||||
|
call drawChar
|
||||||
|
imul esi, 8*4
|
||||||
|
pop edi
|
||||||
|
pop edi
|
||||||
|
add edi, esi
|
||||||
|
pop esi
|
||||||
|
jmp .drawUTF16
|
||||||
|
.drawUTF8:
|
||||||
|
dec dword [esp]
|
||||||
|
js .done
|
||||||
|
xor ebx, ebx
|
||||||
|
mov bl, [esi]
|
||||||
|
inc esi
|
||||||
|
test bl, bl
|
||||||
|
jz .done
|
||||||
|
jns .valid
|
||||||
|
shl bx, 10
|
||||||
|
shr bh, 2
|
||||||
|
mov bl, [esi]
|
||||||
|
shl bl, 2
|
||||||
|
shr bx, 2
|
||||||
|
inc esi
|
||||||
|
cmp bx, 1419
|
||||||
|
jc .valid
|
||||||
|
shl bx, 4
|
||||||
|
@@:
|
||||||
|
jns @f
|
||||||
|
inc esi
|
||||||
|
shl bx, 1
|
||||||
|
jmp @b
|
||||||
|
@@:
|
||||||
|
xor ebx, ebx
|
||||||
|
.valid:
|
||||||
|
pushd esi edi 16
|
||||||
|
shl ebx, 4
|
||||||
|
add ebx, fontUni
|
||||||
|
mov esi, [esp+12+fontMultiplier]
|
||||||
|
call drawChar
|
||||||
|
imul esi, 8*4
|
||||||
|
pop edi
|
||||||
|
pop edi
|
||||||
|
add edi, esi
|
||||||
|
pop esi
|
||||||
|
jmp .drawUTF8
|
||||||
|
.draw866:
|
||||||
|
dec dword [esp]
|
||||||
|
js .done
|
||||||
|
xor ebx, ebx
|
||||||
|
mov bl, [esi]
|
||||||
|
test ebx, ebx
|
||||||
|
jz .done
|
||||||
|
inc esi
|
||||||
|
pushd esi edi 9
|
||||||
|
lea ebx, [ebx*8+ebx+font1]
|
||||||
|
mov esi, [esp+12+fontMultiplier]
|
||||||
|
call drawChar
|
||||||
|
imul esi, 6*4
|
||||||
|
pop edi
|
||||||
|
pop edi
|
||||||
|
add edi, esi
|
||||||
|
pop esi
|
||||||
|
jmp .draw866
|
||||||
|
.done:
|
||||||
|
mov ecx, edi
|
||||||
|
pop eax eax eax esi edx ebx ebp ebp ebp
|
||||||
|
mov edi, [esp]
|
||||||
|
test edi, edi
|
||||||
|
jnz @f
|
||||||
|
pop eax
|
||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
@@:
|
||||||
align 4
|
push eax
|
||||||
FONT_I:
|
sub ecx, edi
|
||||||
|
shr ecx, 2
|
||||||
|
add edx, ecx
|
||||||
|
inc ecx
|
||||||
|
push ecx
|
||||||
|
push edi
|
||||||
|
.drawPicture:
|
||||||
|
mov eax, -1
|
||||||
|
repz scasd
|
||||||
|
jcxz @f
|
||||||
|
mov eax, edx
|
||||||
|
sub eax, ecx
|
||||||
|
push ecx
|
||||||
|
mov ecx, [edi-4]
|
||||||
|
xchg esi, edi
|
||||||
|
call __sys_putpixel
|
||||||
|
xchg esi, edi
|
||||||
|
pop ecx
|
||||||
|
jmp .drawPicture
|
||||||
|
@@:
|
||||||
|
pop edi
|
||||||
|
mov ecx, [esp]
|
||||||
|
add edi, [esp+4]
|
||||||
|
inc ebx
|
||||||
|
push edi
|
||||||
|
dec ebp
|
||||||
|
jnz .drawPicture
|
||||||
|
add esp, 12
|
||||||
|
call kernel_free
|
||||||
|
ret
|
||||||
|
.ret:
|
||||||
|
add esp, 28
|
||||||
|
ret
|
||||||
|
|
||||||
|
drawChar:
|
||||||
|
mov dl, [ebx]
|
||||||
|
.raw:
|
||||||
|
bsf eax, edx
|
||||||
|
jz .nextRaw
|
||||||
|
imul eax, esi
|
||||||
|
shl eax, 2
|
||||||
|
push edi
|
||||||
|
add edi, eax
|
||||||
|
mov ecx, esi
|
||||||
|
dec esi
|
||||||
|
jnz .square
|
||||||
|
mov [edi], ebp
|
||||||
|
inc esi
|
||||||
|
cmp [fontSmoothing], 0
|
||||||
|
jz .nextPixel
|
||||||
|
.checkLeftSubP:
|
||||||
|
bsf eax, edx
|
||||||
|
dec eax
|
||||||
|
js .checkRightSubP
|
||||||
|
bt [ebx], eax
|
||||||
|
jc .checkRightSubP
|
||||||
|
dec eax
|
||||||
|
js .checkLeftDownSubP
|
||||||
|
bt [ebx], eax
|
||||||
|
jc .checkRightSubP
|
||||||
|
.checkLeftDownSubP:
|
||||||
|
inc eax
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc .checkLeftUpSubP
|
||||||
|
inc eax
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc @f
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .checkRightSubP
|
||||||
|
dec eax
|
||||||
|
dec eax
|
||||||
|
js @f
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc @f
|
||||||
|
inc eax
|
||||||
|
.checkLeftUpSubP:
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jnc .checkRightSubP
|
||||||
|
inc eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jnc @f
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc .checkRightSubP
|
||||||
|
dec eax
|
||||||
|
dec eax
|
||||||
|
js @f
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .checkRightSubP
|
||||||
|
@@:
|
||||||
|
mov ecx, [esp+20+deltaToScreen]
|
||||||
|
mov eax, [edi-4]
|
||||||
|
test ecx, ecx
|
||||||
|
jz @f
|
||||||
|
pusha
|
||||||
|
lea ebx, [edi+ecx-4]
|
||||||
|
shr ebx, 2
|
||||||
|
call syscall_getpixel
|
||||||
|
popa
|
||||||
|
@@:
|
||||||
|
mov ecx, eax
|
||||||
|
mov eax, ebp
|
||||||
|
shr al, 1
|
||||||
|
shr cl, 1
|
||||||
|
add al, cl
|
||||||
|
shr ah, 2
|
||||||
|
shr ch, 2
|
||||||
|
add ah, ch
|
||||||
|
add ah, ch
|
||||||
|
add ah, ch
|
||||||
|
ror eax, 8
|
||||||
|
ror ecx, 8
|
||||||
|
mov ah, ch
|
||||||
|
rol eax, 8
|
||||||
|
mov [edi-4], eax
|
||||||
|
.checkRightSubP:
|
||||||
|
bsf eax, edx
|
||||||
|
inc eax
|
||||||
|
bt [ebx], eax
|
||||||
|
jc .nextPixel
|
||||||
|
inc eax
|
||||||
|
bt [ebx], eax
|
||||||
|
jc .nextPixel
|
||||||
|
dec eax
|
||||||
|
.checkRightDownSubP:
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc .checkRightUpSubP
|
||||||
|
dec eax
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc @f
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .nextPixel
|
||||||
|
inc eax
|
||||||
|
inc eax
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc @f
|
||||||
|
dec eax
|
||||||
|
.checkRightUpSubP:
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jnc .nextPixel
|
||||||
|
dec eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jnc @f
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc .nextPixel
|
||||||
|
inc eax
|
||||||
|
inc eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .nextPixel
|
||||||
|
@@:
|
||||||
|
mov ecx, [esp+20+deltaToScreen]
|
||||||
|
mov eax, [edi+4]
|
||||||
|
test ecx, ecx
|
||||||
|
jz @f
|
||||||
|
pusha
|
||||||
|
lea ebx, [edi+ecx+4]
|
||||||
|
shr ebx, 2
|
||||||
|
call syscall_getpixel
|
||||||
|
popa
|
||||||
|
@@:
|
||||||
|
mov ecx, eax
|
||||||
|
mov eax, ebp
|
||||||
|
shr ah, 2
|
||||||
|
shr ch, 2
|
||||||
|
add ah, ch
|
||||||
|
add ah, ch
|
||||||
|
add ah, ch
|
||||||
|
mov al, cl
|
||||||
|
ror eax, 8
|
||||||
|
ror ecx, 8
|
||||||
|
shr ah, 1
|
||||||
|
shr ch, 1
|
||||||
|
add ah, ch
|
||||||
|
rol eax, 8
|
||||||
|
mov [edi+4], eax
|
||||||
|
jmp .nextPixel
|
||||||
|
.square:
|
||||||
|
mov eax, esi
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
add edi, [esp+20+widthX]
|
||||||
|
dec ecx
|
||||||
|
jnz .square
|
||||||
|
inc esi
|
||||||
|
mov edi, [esp]
|
||||||
|
.checkLeft:
|
||||||
|
bsf eax, edx
|
||||||
|
dec eax
|
||||||
|
js .checkRight
|
||||||
|
bt [ebx], eax
|
||||||
|
jc .checkRight
|
||||||
|
.checkLeftDown:
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc .checkLeftUp
|
||||||
|
mov ecx, eax
|
||||||
|
inc eax
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc @f
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jnc .downRightLow
|
||||||
|
bt [ebx-2], eax
|
||||||
|
jc .downRightLow
|
||||||
|
dec eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .downRightLow
|
||||||
|
dec eax
|
||||||
|
js .downRightHigh
|
||||||
|
bt [ebx-2], eax
|
||||||
|
jc .downRightLow
|
||||||
|
jmp .downRightHigh
|
||||||
|
@@:
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .checkLeftUp
|
||||||
|
dec eax
|
||||||
|
dec eax
|
||||||
|
js .downRightLow
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc .checkLeftUp
|
||||||
|
.downRightLow:
|
||||||
|
imul ecx, esi
|
||||||
|
shl ecx, 2
|
||||||
|
add edi, ecx
|
||||||
|
dec esi
|
||||||
|
mov eax, [esp+20+widthX]
|
||||||
|
imul eax, esi
|
||||||
|
add edi, eax
|
||||||
|
add edi, 4
|
||||||
|
mov ecx, esi
|
||||||
|
dec ecx
|
||||||
|
.drawDownRight:
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
sub edi, [esp+20+widthX]
|
||||||
|
add edi, 4
|
||||||
|
dec ecx
|
||||||
|
jns .drawDownRight
|
||||||
|
inc esi
|
||||||
|
mov edi, [esp]
|
||||||
|
jmp .checkLeftUp
|
||||||
|
.downRightHigh:
|
||||||
|
imul ecx, esi
|
||||||
|
shl ecx, 2
|
||||||
|
add edi, ecx
|
||||||
|
dec esi
|
||||||
|
mov eax, [esp+20+widthX]
|
||||||
|
imul eax, esi
|
||||||
|
add edi, eax
|
||||||
|
add edi, 4
|
||||||
|
mov ecx, esi
|
||||||
|
dec ecx
|
||||||
|
.drawDownRightHigh:
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
sub edi, [esp+20+widthX]
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
sub edi, [esp+20+widthX]
|
||||||
|
add edi, 4
|
||||||
|
dec ecx
|
||||||
|
jns .drawDownRightHigh
|
||||||
|
inc esi
|
||||||
|
mov edi, [esp]
|
||||||
|
.checkLeftUp:
|
||||||
|
bsf eax, edx
|
||||||
|
dec eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jnc .checkRight
|
||||||
|
mov ecx, eax
|
||||||
|
inc eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc @f
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc .upRightLow
|
||||||
|
bt [ebx+2], eax
|
||||||
|
jc .upRightLow
|
||||||
|
dec eax
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc .upRightLow
|
||||||
|
dec eax
|
||||||
|
js .upRightHigh
|
||||||
|
bt [ebx+2], eax
|
||||||
|
jc .upRightLow
|
||||||
|
jmp .upRightHigh
|
||||||
|
@@:
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc .checkRight
|
||||||
|
dec eax
|
||||||
|
dec eax
|
||||||
|
js .upRightLow
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .checkRight
|
||||||
|
.upRightLow:
|
||||||
|
imul ecx, esi
|
||||||
|
shl ecx, 2
|
||||||
|
add edi, ecx
|
||||||
|
add edi, 4
|
||||||
|
mov ecx, esi
|
||||||
|
dec ecx
|
||||||
|
dec ecx
|
||||||
|
.drawUpRight:
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
add edi, [esp+20+widthX]
|
||||||
|
add edi, 4
|
||||||
|
dec ecx
|
||||||
|
jns .drawUpRight
|
||||||
|
mov edi, [esp]
|
||||||
|
jmp .checkRight
|
||||||
|
.upRightHigh:
|
||||||
|
imul ecx, esi
|
||||||
|
shl ecx, 2
|
||||||
|
add edi, ecx
|
||||||
|
add edi, 4
|
||||||
|
mov ecx, esi
|
||||||
|
dec ecx
|
||||||
|
dec ecx
|
||||||
|
.drawUpRightHigh:
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
add edi, [esp+20+widthX]
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
add edi, [esp+20+widthX]
|
||||||
|
add edi, 4
|
||||||
|
dec ecx
|
||||||
|
jns .drawUpRightHigh
|
||||||
|
mov edi, [esp]
|
||||||
|
.checkRight:
|
||||||
|
bsf eax, edx
|
||||||
|
inc eax
|
||||||
|
bt [ebx], eax
|
||||||
|
jc .nextPixel
|
||||||
|
.checkRightDown:
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc .checkRightUp
|
||||||
|
mov ecx, eax
|
||||||
|
dec eax
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc @f
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jnc .downLeftLow
|
||||||
|
bt [ebx-2], eax
|
||||||
|
jc .downLeftLow
|
||||||
|
inc eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .downLeftLow
|
||||||
|
inc eax
|
||||||
|
bt [ebx-2], eax
|
||||||
|
jc .downLeftLow
|
||||||
|
jmp .downLeftHigh
|
||||||
|
@@:
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .checkRightUp
|
||||||
|
inc eax
|
||||||
|
inc eax
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc .checkRightUp
|
||||||
|
.downLeftLow:
|
||||||
|
imul ecx, esi
|
||||||
|
shl ecx, 2
|
||||||
|
add edi, ecx
|
||||||
|
dec esi
|
||||||
|
mov eax, [esp+20+widthX]
|
||||||
|
imul eax, esi
|
||||||
|
add edi, eax
|
||||||
|
mov ecx, esi
|
||||||
|
dec ecx
|
||||||
|
.drawDownLeft:
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
sub edi, [esp+20+widthX]
|
||||||
|
dec ecx
|
||||||
|
jns .drawDownLeft
|
||||||
|
inc esi
|
||||||
|
mov edi, [esp]
|
||||||
|
jmp .checkRightUp
|
||||||
|
.downLeftHigh:
|
||||||
|
imul ecx, esi
|
||||||
|
shl ecx, 2
|
||||||
|
add edi, ecx
|
||||||
|
dec esi
|
||||||
|
mov eax, [esp+20+widthX]
|
||||||
|
imul eax, esi
|
||||||
|
add edi, eax
|
||||||
|
mov ecx, esi
|
||||||
|
dec ecx
|
||||||
|
.drawDownLeftHigh:
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
sub edi, [esp+20+widthX]
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
sub edi, [esp+20+widthX]
|
||||||
|
dec ecx
|
||||||
|
jns .drawDownLeftHigh
|
||||||
|
inc esi
|
||||||
|
mov edi, [esp]
|
||||||
|
.checkRightUp:
|
||||||
|
bsf eax, edx
|
||||||
|
inc eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jnc .nextPixel
|
||||||
|
mov ecx, eax
|
||||||
|
dec eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc @f
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jnc .upLeftLow
|
||||||
|
bt [ebx+2], eax
|
||||||
|
jc .upLeftLow
|
||||||
|
inc eax
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc .upLeftLow
|
||||||
|
inc eax
|
||||||
|
bt [ebx+2], eax
|
||||||
|
jc .upLeftLow
|
||||||
|
jmp .upLeftHigh
|
||||||
|
@@:
|
||||||
|
bt [ebx+1], eax
|
||||||
|
jc .nextPixel
|
||||||
|
inc eax
|
||||||
|
inc eax
|
||||||
|
bt [ebx-1], eax
|
||||||
|
jc .nextPixel
|
||||||
|
.upLeftLow:
|
||||||
|
imul ecx, esi
|
||||||
|
shl ecx, 2
|
||||||
|
add edi, ecx
|
||||||
|
mov ecx, esi
|
||||||
|
dec ecx
|
||||||
|
dec ecx
|
||||||
|
.drawUpLeft:
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
add edi, [esp+20+widthX]
|
||||||
|
dec ecx
|
||||||
|
jns .drawUpLeft
|
||||||
|
jmp .nextPixel
|
||||||
|
.upLeftHigh:
|
||||||
|
imul ecx, esi
|
||||||
|
shl ecx, 2
|
||||||
|
add edi, ecx
|
||||||
|
mov ecx, esi
|
||||||
|
dec ecx
|
||||||
|
dec ecx
|
||||||
|
.drawUpLeftHigh:
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
add edi, [esp+20+widthX]
|
||||||
|
mov eax, ecx
|
||||||
|
@@:
|
||||||
|
mov [edi+eax*4], ebp
|
||||||
|
dec eax
|
||||||
|
jns @b
|
||||||
|
add edi, [esp+20+widthX]
|
||||||
|
dec ecx
|
||||||
|
jns .drawUpLeftHigh
|
||||||
|
.nextPixel:
|
||||||
|
bsf eax, edx
|
||||||
|
btr edx, eax
|
||||||
|
pop edi
|
||||||
|
jmp .raw
|
||||||
|
.nextRaw:
|
||||||
|
inc ebx
|
||||||
|
mov eax, [esp+16+widthX]
|
||||||
|
imul eax, esi
|
||||||
|
add edi, eax
|
||||||
|
dec dword [esp+4]
|
||||||
|
jnz drawChar
|
||||||
|
ret
|
||||||
|
|
||||||
|
fontSmoothing db 1
|
||||||
|
font1:
|
||||||
if lang eq sp
|
if lang eq sp
|
||||||
file 'char_sp.mt'
|
file 'char_sp.mt'
|
||||||
else if lang eq et
|
else if lang eq et
|
||||||
@ -238,14 +706,5 @@ FONT_I:
|
|||||||
else
|
else
|
||||||
file 'char.mt'
|
file 'char.mt'
|
||||||
end if
|
end if
|
||||||
;------------------------------------------------------------------------------
|
fontUni:
|
||||||
align 4
|
file 'charUni.mt'
|
||||||
FONT_II:
|
|
||||||
if lang eq sp
|
|
||||||
file 'char2_sp.mt'
|
|
||||||
else if lang eq et
|
|
||||||
file 'char2_et.mt'
|
|
||||||
else
|
|
||||||
file 'char2.mt'
|
|
||||||
end if
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
@ -134,6 +134,10 @@ syscall_display_settings: ;///// system function 48 ///////////////////////////
|
|||||||
;< ebx = 8
|
;< ebx = 8
|
||||||
;< ecx = pointer to FileInfoBlock struct
|
;< ecx = pointer to FileInfoBlock struct
|
||||||
;> eax = FS error code
|
;> eax = FS error code
|
||||||
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
;; Set font smoothing:
|
||||||
|
;< ebx = 9
|
||||||
|
;< ecx = 0 (off) or !0 (on)
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
cmp ebx, .sizeof.ftable / 4
|
cmp ebx, .sizeof.ftable / 4
|
||||||
ja @f
|
ja @f
|
||||||
@ -299,6 +303,11 @@ align 4
|
|||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
syscall_display_settings.09:
|
||||||
|
mov [fontSmoothing], cl
|
||||||
|
ret
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
syscall_display_settings._.calculate_whole_screen:
|
syscall_display_settings._.calculate_whole_screen:
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
xor ebx, ebx
|
xor ebx, ebx
|
||||||
@ -1400,7 +1409,7 @@ sys_window_moving_handler: ;///////////////////////////////////////////////////
|
|||||||
|
|
||||||
iglobal
|
iglobal
|
||||||
FuncTable syscall_display_settings, ftable, \
|
FuncTable syscall_display_settings, ftable, \
|
||||||
00, 01, 02, 03, 04, 05, 06, 07, 08
|
00, 01, 02, 03, 04, 05, 06, 07, 08, 09
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
window_topleft dd \
|
window_topleft dd \
|
||||||
|
@ -8,34 +8,34 @@ if lang eq ru
|
|||||||
|
|
||||||
else if lang eq ge
|
else if lang eq ge
|
||||||
label2:
|
label2:
|
||||||
db ' Beenden Kernel',0
|
db ' Beenden Kernel',0
|
||||||
label3:
|
label3:
|
||||||
db ' Neustart Abbrechen',0
|
db ' Neustart Abbrechen',0
|
||||||
label4:
|
label4:
|
||||||
db 'Save your settings (Ctrl-S)',0
|
db 'Save your settings (Ctrl-S)',0
|
||||||
|
|
||||||
else if lang eq it
|
else if lang eq it
|
||||||
label2:
|
label2:
|
||||||
db ' Spegni Kernel',0
|
db ' Spegni Kernel',0
|
||||||
label3:
|
label3:
|
||||||
db ' Riavvio Annulla',0
|
db ' Riavvio Annulla',0
|
||||||
label4:
|
label4:
|
||||||
db 'Salva impostazioni (Ctrl-S)',0
|
db 'Salva impostazioni (Ctrl-S)',0
|
||||||
|
|
||||||
else
|
else
|
||||||
label2:
|
label2:
|
||||||
db ' Power off Kernel',0
|
db 'Power off Kernel',0
|
||||||
label3:
|
label3:
|
||||||
db ' Restart Cancel',0
|
db ' Restart Cancel',0
|
||||||
label4:
|
label4:
|
||||||
db 'Save your settings (Ctrl-S)',0
|
db 'Save your settings (Ctrl-S)',0
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
label5:
|
label5:
|
||||||
db '(End) (Home)',0
|
db ' (End) (Home)',0
|
||||||
label6:
|
label6:
|
||||||
db '(Enter) (Esc)',0
|
db '(Enter) (Esc)',0
|
||||||
|
|
||||||
rdsave:
|
rdsave:
|
||||||
dd 7,0,hide,0,0
|
dd 7,0,hide,0,0
|
||||||
@ -90,15 +90,13 @@ aini_get_int db 'ini_get_int',0
|
|||||||
aini_set_int db 'ini_set_int',0
|
aini_set_int db 'ini_set_int',0
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
|
|
||||||
check1 check_box2 20 shl 16 +8,93 shl 16 +8,6,0xffffff,0,0,label4
|
check1 check_box2 20 shl 16 +8,110 shl 16 +8,6,0xffffff,0,0,label4
|
||||||
|
|
||||||
hide db 'h',0
|
hide db 'h',0
|
||||||
asettings db 'settings',0
|
asettings db 'settings',0
|
||||||
aautosave db 'autosave',0
|
aautosave db 'autosave',0
|
||||||
ini_file db '/sys/settings/rdsave.ini',0
|
ini_file db '/sys/settings/rdsave.ini',0
|
||||||
|
|
||||||
|
|
||||||
If fade=1
|
|
||||||
color1 dd 0x019098d0
|
color1 dd 0x019098d0
|
||||||
color2 dd 0xFFFFFF
|
color2 dd 0xFFFFFF
|
||||||
color3 dd 0xe4dfe1
|
color3 dd 0xe4dfe1
|
||||||
@ -108,7 +106,10 @@ color5 dd 0xaa7700
|
|||||||
color6 dd 0x777777
|
color6 dd 0x777777
|
||||||
color7 dd 0x007700
|
color7 dd 0x007700
|
||||||
|
|
||||||
color8 dd 0x90FFFFFF
|
color8 dd 0x81FFFFFF
|
||||||
|
color9 dd 0x80FFFFFF
|
||||||
|
|
||||||
|
If fade=1
|
||||||
|
|
||||||
color21 dd 0x01505890
|
color21 dd 0x01505890
|
||||||
color22 dd 0xbfbfbf
|
color22 dd 0xbfbfbf
|
||||||
@ -120,17 +121,8 @@ color26 dd 0x373737
|
|||||||
color27 dd 0x003700
|
color27 dd 0x003700
|
||||||
|
|
||||||
color28 dd 0x90bfbfbf
|
color28 dd 0x90bfbfbf
|
||||||
|
|
||||||
else
|
else
|
||||||
color1 dd 0x019098d0
|
|
||||||
color2 dd 0xFFFFFF
|
|
||||||
color3 dd 0xe4dfe1
|
|
||||||
|
|
||||||
color4 dd 0x990022
|
|
||||||
color5 dd 0xaa7700
|
|
||||||
color6 dd 0x777777
|
|
||||||
color7 dd 0x007700
|
|
||||||
|
|
||||||
color8 dd 0x90FFFFFF
|
|
||||||
|
|
||||||
if lang eq ru
|
if lang eq ru
|
||||||
label7:
|
label7:
|
||||||
|
@ -1,22 +1,19 @@
|
|||||||
;
|
|
||||||
; END
|
; END
|
||||||
; KolibriOS Team 2005-2013
|
; KolibriOS Team 2005-2015
|
||||||
;
|
|
||||||
; <diamond> note that 'mov al,xx' is shorter than 'mov eax,xx'
|
|
||||||
; and if we know that high 24 bits of eax are zero, we can use 1st form
|
|
||||||
; the same about ebx,ecx,edx
|
|
||||||
fade equ 0
|
fade equ 0
|
||||||
|
|
||||||
use32 ; ¢ª«îç¨âì 32-¡¨âë© à¥¦¨¬ áᥬ¡«¥à
|
use32 ; ¢ª«îç¨âì 32-¡¨âë© à¥¦¨¬ áᥬ¡«¥à
|
||||||
org 0x0 ; ¤à¥á æ¨ï á ã«ï
|
org 0x0 ; ¤à¥á æ¨ï á ã«ï
|
||||||
|
|
||||||
db 'MENUET01' ; 8-¡ ©âë© ¨¤¥â¨ä¨ª â®à MenuetOS
|
db 'MENUET01' ; 8-¡ ©âë© ¨¤¥â¨ä¨ª â®à MenuetOS
|
||||||
dd 0x01 ; ¢¥àá¨ï § £®«®¢ª (¢á¥£¤ 1)
|
dd 0x01 ; ¢¥àá¨ï § £®«®¢ª (¢á¥£¤ 1)
|
||||||
dd START ; ¤à¥á ¯¥à¢®© ª®¬ ¤ë
|
dd START ; ¤à¥á ¯¥à¢®© ª®¬ ¤ë
|
||||||
dd IM_END ; à §¬¥à ¯à®£à ¬¬ë
|
dd IM_END ; à §¬¥à ¯à®£à ¬¬ë
|
||||||
dd I_END ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
|
dd I_END ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
|
||||||
dd stacktop ; ¤à¥á ¢¥àè¨ë á⥪
|
dd stacktop ; ¤à¥á ¢¥àè¨ë á⥪
|
||||||
dd 0x0 ; ¤à¥á ¡ãä¥à ¤«ï ¯ à ¬¥â஢
|
dd 0x0 ; ¤à¥á ¡ãä¥à ¤«ï ¯ à ¬¥â஢
|
||||||
dd cur_dir_path
|
dd cur_dir_path
|
||||||
|
|
||||||
include 'lang.inc'
|
include 'lang.inc'
|
||||||
@ -26,43 +23,43 @@ include '../../../dll.inc'
|
|||||||
include '../../../develop/libraries/box_lib/load_lib.mac'
|
include '../../../develop/libraries/box_lib/load_lib.mac'
|
||||||
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
|
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||||
|
|
||||||
@use_library
|
@use_library
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
START:
|
START:
|
||||||
|
|
||||||
load_libraries l_libs_start,end_l_libs
|
load_libraries l_libs_start,end_l_libs
|
||||||
inc eax
|
inc eax
|
||||||
test eax,eax
|
test eax,eax
|
||||||
jz close
|
jz close
|
||||||
|
|
||||||
push dword check1
|
push dword check1
|
||||||
call [init_checkbox2]
|
call [init_checkbox2]
|
||||||
|
|
||||||
stdcall dll.Init,[init_lib]
|
stdcall dll.Init,[init_lib]
|
||||||
|
|
||||||
invoke ini_get_int,ini_file,asettings,aautosave,0
|
invoke ini_get_int,ini_file,asettings,aautosave,0
|
||||||
mov [autosave],eax
|
mov [autosave],eax
|
||||||
dec eax
|
dec eax
|
||||||
jnz @f
|
jnz @f
|
||||||
bts dword [check1.flags],1
|
bts dword [check1.flags],1
|
||||||
@@:
|
@@:
|
||||||
mcall 40,0x80000027
|
mcall 40,0x80000027
|
||||||
redraw:
|
redraw:
|
||||||
call draw_window
|
call draw_window
|
||||||
still:
|
still:
|
||||||
mov al,10
|
mov al,10
|
||||||
mcall ;wait here for event
|
mcall ;wait here for event
|
||||||
dec eax
|
dec eax
|
||||||
jz redraw
|
jz redraw
|
||||||
dec eax
|
dec eax
|
||||||
jz key
|
jz key
|
||||||
dec eax
|
dec eax
|
||||||
jz button
|
jz button
|
||||||
|
|
||||||
push dword check1
|
push dword check1
|
||||||
call [check_box_mouse2]
|
call [check_box_mouse2]
|
||||||
bt dword [check1.flags],1
|
bt dword [check1.flags],1
|
||||||
jnc @f
|
jnc @f
|
||||||
mov [autosave],1
|
mov [autosave],1
|
||||||
jmp still
|
jmp still
|
||||||
@ -72,7 +69,7 @@ still:
|
|||||||
|
|
||||||
key:
|
key:
|
||||||
mov al,2
|
mov al,2
|
||||||
mcall ;eax=2 - get key code
|
mcall ;eax=2 - get key code
|
||||||
mov al,ah
|
mov al,ah
|
||||||
cmp al,13
|
cmp al,13
|
||||||
je restart
|
je restart
|
||||||
@ -89,14 +86,14 @@ close:
|
|||||||
mcall -1
|
mcall -1
|
||||||
|
|
||||||
button:
|
button:
|
||||||
mcall 17 ;eax=17 - get pressed button id
|
mcall 17 ;eax=17 - get pressed button id
|
||||||
xchg al,ah
|
xchg al,ah
|
||||||
dec eax
|
dec eax
|
||||||
jz close
|
jz close
|
||||||
dec eax
|
dec eax
|
||||||
jz restart_kernel
|
jz restart_kernel
|
||||||
dec eax
|
dec eax
|
||||||
jz restart
|
jz restart
|
||||||
dec eax
|
dec eax
|
||||||
jnz checkbox
|
jnz checkbox
|
||||||
|
|
||||||
@ -131,12 +128,12 @@ end if
|
|||||||
|
|
||||||
if fade=0
|
if fade=0
|
||||||
mov al,4
|
mov al,4
|
||||||
mcall ,<50,110> ,0x800000cc,label7 ;eax=4 - write text
|
mcall ,<50,120> ,0x800000cc,label7 ;eax=4 - write text
|
||||||
end if
|
end if
|
||||||
|
|
||||||
mcall 70,rdsave
|
mcall 70,rdsave
|
||||||
test eax,eax
|
test eax,eax
|
||||||
js no_save
|
js no_save
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
mcall 18,21
|
mcall 18,21
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
@ -150,7 +147,7 @@ no_red:
|
|||||||
pop ecx
|
pop ecx
|
||||||
mcall 9,proc_info
|
mcall 9,proc_info
|
||||||
cmp [proc_info+50],9
|
cmp [proc_info+50],9
|
||||||
je no_save
|
je no_save
|
||||||
jmp @b
|
jmp @b
|
||||||
no_save:
|
no_save:
|
||||||
pop ecx
|
pop ecx
|
||||||
@ -159,7 +156,7 @@ ret
|
|||||||
|
|
||||||
checkbox:
|
checkbox:
|
||||||
btc dword [check1.flags],1
|
btc dword [check1.flags],1
|
||||||
jc .1
|
jc .1
|
||||||
mov [autosave],1
|
mov [autosave],1
|
||||||
jmp .draw
|
jmp .draw
|
||||||
.1:
|
.1:
|
||||||
@ -174,34 +171,34 @@ draw_window:
|
|||||||
mcall ,1
|
mcall ,1
|
||||||
|
|
||||||
mov al,14
|
mov al,14
|
||||||
mcall ;eax=14 - get screen max x & max y
|
mcall ;eax=14 - get screen max x & max y
|
||||||
movzx ecx,ax
|
movzx ecx,ax
|
||||||
shr eax,17
|
shr eax,17
|
||||||
shl eax,16
|
shl eax,16
|
||||||
lea ebx,[eax-110 shl 16+222]
|
lea ebx,[eax-165 shl 16+332]
|
||||||
shr ecx,1
|
shr ecx,1
|
||||||
shl ecx,16
|
shl ecx,16
|
||||||
lea ecx,[ecx-70 shl 16+122]
|
lea ecx,[ecx-70 shl 16+132]
|
||||||
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mcall , , ,[color1],0x01000000 ;define and draw window
|
mcall , , ,[color1],0x01000000 ;define and draw window
|
||||||
|
|
||||||
mov al,13
|
mov al,13
|
||||||
mcall ,<0,223> ,<0,123>
|
mcall ,<0,333> ,<0,133>
|
||||||
mcall ,<1,221>,<1,121>,[color2]
|
mcall ,<1,331>,<1,131>,[color2]
|
||||||
mcall ,<2,220>,<2,120>, [color3]
|
mcall ,<2,330>,<2,130>, [color3]
|
||||||
|
|
||||||
mov al,8
|
mov al,8
|
||||||
mcall ,<16,90> ,<20,27>,4,[color4] ;eax=8 - draw buttons
|
mcall ,<16,144> ,<16,36>,4,[color4] ;eax=8 - draw buttons
|
||||||
mcall ,<113,90>, ,2,[color5]
|
mcall ,<170,144>, ,2,[color5]
|
||||||
mcall , ,<54,27>,1,[color6]
|
mcall , ,<62,36>,1,[color6]
|
||||||
mcall ,<16,90> , ,3,[color7]
|
mcall ,<16,144> , ,3,[color7]
|
||||||
|
|
||||||
mov al,4
|
mov al,4
|
||||||
mcall ,<27,24> ,[color8],label2 ;eax=4 - write text
|
mcall ,<28,19> ,[color8],label2 ;eax=4 - write text
|
||||||
mcall ,<23,58> , ,label3
|
mcall ,<28,65> , ,label3
|
||||||
mcall ,<47,37> , ,label5
|
mcall ,<64,40> ,[color9],label5
|
||||||
mcall ,<41,71> , ,label6
|
mcall ,<64,86> , ,label6
|
||||||
|
|
||||||
push dword check1
|
push dword check1
|
||||||
call [check_box_draw2]
|
call [check_box_draw2]
|
||||||
@ -222,12 +219,12 @@ proc_info rb 1024
|
|||||||
autosave rd 1
|
autosave rd 1
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
cur_dir_path:
|
cur_dir_path:
|
||||||
rb 4096
|
rb 4096
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
library_path:
|
library_path:
|
||||||
rb 4096
|
rb 4096
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
align 32
|
align 32
|
||||||
rb 4096
|
rb 4096
|
||||||
stacktop:
|
stacktop:
|
||||||
I_END: ; ¬¥âª ª®æ ¯à®£à ¬¬ë
|
I_END: ; ¬¥âª ª®æ ¯à®£à ¬¬ë
|
Loading…
Reference in New Issue
Block a user