From 1284ae36cac8363286dcda32d395223726c25bd6 Mon Sep 17 00:00:00 2001 From: Pathoswithin Date: Mon, 3 Aug 2015 12:38:30 +0000 Subject: [PATCH] new font code git-svn-id: svn://kolibrios.org@5665 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/gui/char2.mt | Bin 2560 -> 0 bytes kernel/trunk/gui/char2_et.mt | Bin 2560 -> 0 bytes kernel/trunk/gui/char2_sp.mt | Bin 2560 -> 0 bytes kernel/trunk/gui/charUni.mt | Bin 0 -> 22704 bytes kernel/trunk/gui/font.inc | 917 ++++++++++++++++++++++------- kernel/trunk/gui/window.inc | 11 +- programs/system/end/light/data.inc | 36 +- programs/system/end/light/end.asm | 115 ++-- 8 files changed, 768 insertions(+), 311 deletions(-) delete mode 100644 kernel/trunk/gui/char2.mt delete mode 100644 kernel/trunk/gui/char2_et.mt delete mode 100644 kernel/trunk/gui/char2_sp.mt create mode 100644 kernel/trunk/gui/charUni.mt diff --git a/kernel/trunk/gui/char2.mt b/kernel/trunk/gui/char2.mt deleted file mode 100644 index d27525166328cdf80aa5cb1dbbc44ea46f4afc50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2560 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 AH2?qr literal 0 HcmV?d00001 diff --git a/kernel/trunk/gui/font.inc b/kernel/trunk/gui/font.inc index a331ad3174..a4bdabb641 100644 --- a/kernel/trunk/gui/font.inc +++ b/kernel/trunk/gui/font.inc @@ -7,230 +7,698 @@ $Revision$ -;------------------------------------------------------------------------------ -align 4 -dtext_asciiz_esi: ; for skins title out - push eax - xor eax, eax - inc eax - jmp dtext.1 -;------------------------------------------------------------------------------ -align 4 +dtext_asciiz_esi: + btr ecx, 31 dtext: -; ebx x & y -; ecx style ( 0xX0000000 ) & color ( 0x00RRGGBB ) -; X = ABnnb: -; nn = font -; A = 0 <=> output esi characters; otherwise output ASCIIZ string -; B = 1 <=> fill background with color eax -; edx start of text -; edi 1 force or user area for redirect - push eax +; edx -> string +; esi = number of characters +; ebx = output coordinates XXXXYYYY h +; ecx = char color and flags flRRGGBB h +; fl = ZBFFRSSS b +; Z=1: edx -> zero terminated string, esi = ? +; B=1: fill background with color eax +; R=1: edi -> user area for redirect +; 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 -;-------------------------------------- -align 4 -.1: - pushad - movsx eax, bx ; eax=y - sar ebx, 16 ; ebx=x - xchg eax, ebx ; eax=x, ebx=y - cmp esi, 255 - jb .loop - - mov esi, 255 -;-------------------------------------- -align 4 -.loop: - test ecx, ecx - js .test_asciiz - - dec esi - js .end - + dec eax +@@: + pushd 0 0 0 eax + movsx eax, bx + sar ebx, 16 + push eax ebx edi + bt ecx, 27 + jc .redirect + mov ebp, [_display.width] + xor edi, edi jmp @f -;-------------------------------------- -align 4 -.test_asciiz: - cmp byte [edx], 0 - jz .end - - cmp byte [esp+28], 1 - jne @f - - dec esi - js .end -;-------------------------------------- -align 4 +.redirect: + mov ebp, [edi] + add edi, 8 @@: - inc edx - pushad - movzx edx, byte [edx-1] - 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] + shl ebp, 2 + imul eax, ebp + shl ebx, 2 add eax, ebx - shl eax, 2 - add eax, edi - add eax, 8 - and ecx, 0xffffff - or ecx, 0xff000000 ; not transparent - mov [eax], ecx ; store pixel - popad + js .ret + add edi, eax ; linear address (32bit) + mov eax, ecx + mov ebx, ecx + test ecx, ecx + jns @f + 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 -;------------------------------------------------------------------------------ -align 4 -FONT_I: +@@: + push eax + 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 file 'char_sp.mt' else if lang eq et @@ -238,14 +706,5 @@ FONT_I: else file 'char.mt' end if -;------------------------------------------------------------------------------ -align 4 -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 -;------------------------------------------------------------------------------ +fontUni: +file 'charUni.mt' diff --git a/kernel/trunk/gui/window.inc b/kernel/trunk/gui/window.inc index 095f0a0436..ad7b64c769 100644 --- a/kernel/trunk/gui/window.inc +++ b/kernel/trunk/gui/window.inc @@ -134,6 +134,10 @@ syscall_display_settings: ;///// system function 48 /////////////////////////// ;< ebx = 8 ;< ecx = pointer to FileInfoBlock struct ;> eax = FS error code +; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +;; Set font smoothing: +;< ebx = 9 +;< ecx = 0 (off) or !0 (on) ;------------------------------------------------------------------------------ cmp ebx, .sizeof.ftable / 4 ja @f @@ -299,6 +303,11 @@ align 4 ret ;------------------------------------------------------------------------------ align 4 +syscall_display_settings.09: + mov [fontSmoothing], cl + ret +;------------------------------------------------------------------------------ +align 4 syscall_display_settings._.calculate_whole_screen: xor eax, eax xor ebx, ebx @@ -1400,7 +1409,7 @@ sys_window_moving_handler: ;/////////////////////////////////////////////////// iglobal 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 window_topleft dd \ diff --git a/programs/system/end/light/data.inc b/programs/system/end/light/data.inc index d7d931438d..6a440b6748 100644 --- a/programs/system/end/light/data.inc +++ b/programs/system/end/light/data.inc @@ -8,34 +8,34 @@ if lang eq ru else if lang eq ge label2: - db ' Beenden Kernel',0 + db ' Beenden Kernel',0 label3: - db ' Neustart Abbrechen',0 + db ' Neustart Abbrechen',0 label4: db 'Save your settings (Ctrl-S)',0 else if lang eq it label2: - db ' Spegni Kernel',0 + db ' Spegni Kernel',0 label3: - db ' Riavvio Annulla',0 + db ' Riavvio Annulla',0 label4: db 'Salva impostazioni (Ctrl-S)',0 else label2: - db ' Power off Kernel',0 + db 'Power off Kernel',0 label3: - db ' Restart Cancel',0 + db ' Restart Cancel',0 label4: db 'Save your settings (Ctrl-S)',0 end if label5: - db '(End) (Home)',0 + db ' (End) (Home)',0 label6: - db '(Enter) (Esc)',0 + db '(Enter) (Esc)',0 rdsave: 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 ;--------------------------------------------------------------------- -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 asettings db 'settings',0 aautosave db 'autosave',0 ini_file db '/sys/settings/rdsave.ini',0 - -If fade=1 color1 dd 0x019098d0 color2 dd 0xFFFFFF color3 dd 0xe4dfe1 @@ -108,7 +106,10 @@ color5 dd 0xaa7700 color6 dd 0x777777 color7 dd 0x007700 -color8 dd 0x90FFFFFF +color8 dd 0x81FFFFFF +color9 dd 0x80FFFFFF + +If fade=1 color21 dd 0x01505890 color22 dd 0xbfbfbf @@ -120,17 +121,8 @@ color26 dd 0x373737 color27 dd 0x003700 color28 dd 0x90bfbfbf + 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 label7: diff --git a/programs/system/end/light/end.asm b/programs/system/end/light/end.asm index 810f9a28c8..6ea19ee00b 100644 --- a/programs/system/end/light/end.asm +++ b/programs/system/end/light/end.asm @@ -1,22 +1,19 @@ -; + ; END -; KolibriOS Team 2005-2013 -; -; 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 +; KolibriOS Team 2005-2015 + fade equ 0 -use32 ; включить 32-битный режим ассемблера +use32 ; включить 32-битный режим ассемблера org 0x0 ; адресация с нуля -db 'MENUET01' ; 8-байтный идентификатор MenuetOS -dd 0x01 ; версия заголовка (всегда 1) -dd START ; адрес первой команды -dd IM_END ; размер программы -dd I_END ; количество памяти -dd stacktop ; адрес вершины стека -dd 0x0 ; адрес буфера для параметров +db 'MENUET01' ; 8-байтный идентификатор MenuetOS +dd 0x01 ; версия заголовка (всегда 1) +dd START ; адрес первой команды +dd IM_END ; размер программы +dd I_END ; количество памяти +dd stacktop ; адрес вершины стека +dd 0x0 ; адрес буфера для параметров dd cur_dir_path include 'lang.inc' @@ -26,43 +23,43 @@ include '../../../dll.inc' include '../../../develop/libraries/box_lib/load_lib.mac' include '../../../develop/libraries/box_lib/trunk/box_lib.mac' - @use_library + @use_library align 4 START: load_libraries l_libs_start,end_l_libs - inc eax - test eax,eax - jz close + inc eax + test eax,eax + jz close -push dword check1 -call [init_checkbox2] +push dword check1 +call [init_checkbox2] stdcall dll.Init,[init_lib] -invoke ini_get_int,ini_file,asettings,aautosave,0 - mov [autosave],eax - dec eax - jnz @f - bts dword [check1.flags],1 +invoke ini_get_int,ini_file,asettings,aautosave,0 + mov [autosave],eax + dec eax + jnz @f + bts dword [check1.flags],1 @@: - mcall 40,0x80000027 + mcall 40,0x80000027 redraw: call draw_window still: mov al,10 - mcall ;wait here for event + mcall ;wait here for event dec eax - jz redraw + jz redraw dec eax - jz key + jz key dec eax - jz button + jz button push dword check1 call [check_box_mouse2] - bt dword [check1.flags],1 + bt dword [check1.flags],1 jnc @f mov [autosave],1 jmp still @@ -72,7 +69,7 @@ still: key: mov al,2 - mcall ;eax=2 - get key code + mcall ;eax=2 - get key code mov al,ah cmp al,13 je restart @@ -89,14 +86,14 @@ close: mcall -1 button: - mcall 17 ;eax=17 - get pressed button id + mcall 17 ;eax=17 - get pressed button id xchg al,ah dec eax - jz close + jz close dec eax - jz restart_kernel + jz restart_kernel dec eax - jz restart + jz restart dec eax jnz checkbox @@ -131,12 +128,12 @@ end if if fade=0 mov al,4 - mcall ,<50,110> ,0x800000cc,label7 ;eax=4 - write text + mcall ,<50,120> ,0x800000cc,label7 ;eax=4 - write text end if mcall 70,rdsave test eax,eax - js no_save + js no_save mov ecx,eax mcall 18,21 mov ecx,eax @@ -150,7 +147,7 @@ no_red: pop ecx mcall 9,proc_info cmp [proc_info+50],9 - je no_save + je no_save jmp @b no_save: pop ecx @@ -159,7 +156,7 @@ ret checkbox: btc dword [check1.flags],1 - jc .1 + jc .1 mov [autosave],1 jmp .draw .1: @@ -174,34 +171,34 @@ draw_window: mcall ,1 mov al,14 - mcall ;eax=14 - get screen max x & max y + mcall ;eax=14 - get screen max x & max y movzx ecx,ax shr eax,17 shl eax,16 - lea ebx,[eax-110 shl 16+222] + lea ebx,[eax-165 shl 16+332] shr ecx,1 shl ecx,16 - lea ecx,[ecx-70 shl 16+122] + lea ecx,[ecx-70 shl 16+132] xor eax,eax - mcall , , ,[color1],0x01000000 ;define and draw window + mcall , , ,[color1],0x01000000 ;define and draw window mov al,13 - mcall ,<0,223> ,<0,123> - mcall ,<1,221>,<1,121>,[color2] - mcall ,<2,220>,<2,120>, [color3] + mcall ,<0,333> ,<0,133> + mcall ,<1,331>,<1,131>,[color2] + mcall ,<2,330>,<2,130>, [color3] mov al,8 - mcall ,<16,90> ,<20,27>,4,[color4] ;eax=8 - draw buttons - mcall ,<113,90>, ,2,[color5] - mcall , ,<54,27>,1,[color6] - mcall ,<16,90> , ,3,[color7] + mcall ,<16,144> ,<16,36>,4,[color4] ;eax=8 - draw buttons + mcall ,<170,144>, ,2,[color5] + mcall , ,<62,36>,1,[color6] + mcall ,<16,144> , ,3,[color7] mov al,4 - mcall ,<27,24> ,[color8],label2 ;eax=4 - write text - mcall ,<23,58> , ,label3 - mcall ,<47,37> , ,label5 - mcall ,<41,71> , ,label6 + mcall ,<28,19> ,[color8],label2 ;eax=4 - write text + mcall ,<28,65> , ,label3 + mcall ,<64,40> ,[color9],label5 + mcall ,<64,86> , ,label6 push dword check1 call [check_box_draw2] @@ -222,12 +219,12 @@ proc_info rb 1024 autosave rd 1 ;--------------------------------------------------------------------- cur_dir_path: - rb 4096 + rb 4096 ;--------------------------------------------------------------------- library_path: - rb 4096 + rb 4096 ;--------------------------------------------------------------------- align 32 - rb 4096 + rb 4096 stacktop: -I_END: ; метка конца программы \ No newline at end of file +I_END: ; метка конца программы \ No newline at end of file