forked from KolibriOS/kolibrios
changed background handling
git-svn-id: svn://kolibrios.org@546 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -20,6 +20,7 @@ struc MEM_BLOCK
|
|||||||
MEM_LIST_OFFSET equ 8
|
MEM_LIST_OFFSET equ 8
|
||||||
FREE_BLOCK equ 4
|
FREE_BLOCK equ 4
|
||||||
USED_BLOCK equ 8
|
USED_BLOCK equ 8
|
||||||
|
DONT_FREE_BLOCK equ 10h
|
||||||
|
|
||||||
virtual at 0
|
virtual at 0
|
||||||
MEM_BLOCK MEM_BLOCK
|
MEM_BLOCK MEM_BLOCK
|
||||||
@@ -728,8 +729,10 @@ proc user_free stdcall, base:dword
|
|||||||
sub esi, 4096
|
sub esi, 4096
|
||||||
shr esi, 12
|
shr esi, 12
|
||||||
mov eax, [page_tabs+esi*4]
|
mov eax, [page_tabs+esi*4]
|
||||||
test eax, USED_BLOCK
|
test al, USED_BLOCK
|
||||||
jz .not_used
|
jz .not_used
|
||||||
|
test al, DONT_FREE_BLOCK
|
||||||
|
jnz .cantfree
|
||||||
|
|
||||||
and eax, not 4095
|
and eax, not 4095
|
||||||
mov ecx, eax
|
mov ecx, eax
|
||||||
@@ -765,6 +768,9 @@ proc user_free stdcall, base:dword
|
|||||||
xor eax, eax
|
xor eax, eax
|
||||||
inc eax
|
inc eax
|
||||||
ret
|
ret
|
||||||
|
.cantfree:
|
||||||
|
xor eax, eax
|
||||||
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
user_normalize:
|
user_normalize:
|
||||||
@@ -836,6 +842,8 @@ user_realloc:
|
|||||||
xor eax, eax
|
xor eax, eax
|
||||||
ret
|
ret
|
||||||
@@:
|
@@:
|
||||||
|
test edx, DONT_FREE_BLOCK
|
||||||
|
jnz .ret0
|
||||||
add ebx, 0x1FFF
|
add ebx, 0x1FFF
|
||||||
shr edx, 12
|
shr edx, 12
|
||||||
shr ebx, 12
|
shr ebx, 12
|
||||||
|
@@ -720,6 +720,11 @@ term9:
|
|||||||
mov [flp_status], 0
|
mov [flp_status], 0
|
||||||
@@:
|
@@:
|
||||||
pop esi
|
pop esi
|
||||||
|
cmp [bgrlockpid], esi
|
||||||
|
jnz @f
|
||||||
|
and [bgrlockpid], 0
|
||||||
|
mov [bgrlock], 0
|
||||||
|
@@:
|
||||||
|
|
||||||
pusha ; remove all irq reservations
|
pusha ; remove all irq reservations
|
||||||
mov eax,esi
|
mov eax,esi
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Kolibri 0.6.5.0
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Kolibri 0.7.0.0
|
||||||
|
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><><EFBFBD><EFBFBD>頥<EFBFBD><E9A0A5><EFBFBD> <20> ॣ<><E0A5A3><EFBFBD><EFBFBD> eax.
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><><EFBFBD><EFBFBD>頥<EFBFBD><E9A0A5><EFBFBD> <20> ॣ<><E0A5A3><EFBFBD><EFBFBD> eax.
|
||||||
<EFBFBD>맮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>㭪樨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢫<EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "int 0x40".
|
<EFBFBD>맮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>㭪樨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢫<EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "int 0x40".
|
||||||
@@ -574,6 +574,34 @@
|
|||||||
* <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>࠭<EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> <20><>ਨ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ࠡ<><E0A0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
* <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>࠭<EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> <20><>ਨ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ࠡ<><E0A0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||||
䮭<><E4AEAD>) <20><><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD> <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> 䮭<>.
|
䮭<><E4AEAD>) <20><><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD> <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> 䮭<>.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
====================== <20>㭪<EFBFBD><E3ADAA><EFBFBD> 15, <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 6 ======================
|
||||||
|
==== <20><><EFBFBD><E0AEA5><EFBFBD><E0AEA2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䮭<> <20><> <20><><EFBFBD><EFBFBD>᭮<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>࠭<EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. ====
|
||||||
|
======================================================================
|
||||||
|
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
|
* eax = 15 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||||
|
* ebx = 6 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
||||||
|
* eax = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䮭<>, 0 <20><><EFBFBD> <20>訡<EFBFBD><E8A8A1>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD>:
|
||||||
|
* <20><><EFBFBD><E0AEA5><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㯭<EFBFBD> <20><> <20>⥭<EFBFBD><E2A5AD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䮭<> ࠢ<><E0A0A2> 3*xsize*ysize. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧ<><E0A0A7> 䮭<>
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>६<EFBFBD> ࠡ<><E0A0A1><EFBFBD> <20> <20><><EFBFBD><E0AEA5><EFBFBD><E0AEA2><EFBFBD>묨 <20><><EFBFBD><EFBFBD>묨.
|
||||||
|
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD> <20>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD> 3-<2D><><EFBFBD>⮢<EFBFBD><E2AEA2> <20><><EFBFBD><EFBFBD>稭<EFBFBD> BBGGRR.
|
||||||
|
* <20><><EFBFBD>ᥫ<EFBFBD> 䮭<><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD>⥫쭮
|
||||||
|
<><E1ABA5> <20><><EFBFBD>ࠢ<EFBFBD>, ᢥ<><E1A2A5><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
====================== <20>㭪<EFBFBD><E3ADAA><EFBFBD> 15, <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 7 ======================
|
||||||
|
=== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䮭<> <20><> <20><><EFBFBD><EFBFBD>᭮<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>࠭<EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. ==
|
||||||
|
======================================================================
|
||||||
|
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
|
* eax = 15 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||||
|
* ebx = 7 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
||||||
|
* ecx = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䮭<>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
||||||
|
* eax = 1 <20><><EFBFBD> <20>ᯥ<EFBFBD><E1AFA5>, 0 <20><><EFBFBD> <20>訡<EFBFBD><E8A8A1>
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
============= <20>㭪<EFBFBD><E3ADAA><EFBFBD> 16 - <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> ࠬ<><E0A0AC><EFBFBD><EFBFBD> <20><> <20><>᪥<EFBFBD><E1AAA5>. =============
|
============= <20>㭪<EFBFBD><E3ADAA><EFBFBD> 16 - <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> ࠬ<><E0A0AC><EFBFBD><EFBFBD> <20><> <20><>᪥<EFBFBD><E1AAA5>. =============
|
||||||
======================================================================
|
======================================================================
|
||||||
@@ -839,7 +867,7 @@
|
|||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
db a,b,c,d <20><><EFBFBD> <20><><EFBFBD>ᨨ a.b.c.d
|
db a,b,c,d <20><><EFBFBD> <20><><EFBFBD>ᨨ a.b.c.d
|
||||||
db UID_xxx: <20><><EFBFBD><EFBFBD> <20><> UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
|
db UID_xxx: <20><><EFBFBD><EFBFBD> <20><> UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
|
||||||
dd REV - <20><><EFBFBD><EFBFBD><EFBFBD> svn ॢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
dd REV - <20><><EFBFBD><EFBFBD><EFBFBD> svn-ॢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Kolibri 0.7.0.0:
|
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Kolibri 0.7.0.0:
|
||||||
db 0,7,0,0
|
db 0,7,0,0
|
||||||
db 2
|
db 2
|
||||||
@@ -2305,12 +2333,11 @@ dword-
|
|||||||
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
* eax = 48 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
* eax = 48 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||||
* ebx = 8 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
* ebx = 8 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
||||||
* ecx = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20>㭪樨 58, <20> <20><><EFBFBD><EFBFBD> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
* ecx = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD> 䠩<><E4A0A9> ᪨<EFBFBD><EFBFBD>
|
||||||
<20><><EFBFBD><EFBFBD> <20><EFBFBD><E0AEAC><EFBFBD><EFBFBD><EFBFBD>筮<EFBFBD><E7ADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 㪠<><E3AAA0><EFBFBD><EFBFBD> <20><><EFBFBD> 䠩<><E4A0A9>
|
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
||||||
* eax = 0 - <20>ᯥ譮
|
* eax = 0 - <20>ᯥ譮
|
||||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> eax = <20><><EFBFBD> <20>訡<EFBFBD><E8A8A1> 䠩<><E4A0A9><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD>; <20> 䠩<> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᪨<>,
|
* eax = 1 - <20><> 㤠<><E3A4A0><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㧨<EFBFBD><E3A7A8> 䠩<>
|
||||||
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><E9A0A5><EFBFBD> <20>訡<EFBFBD><E8A8A1> 3 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⭠<EFBFBD> 䠩<><E4A0A9><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD>).
|
* eax = 2 - 䠩<> <20><> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9><EFBFBD> ᪨<EFBFBD><EFBFBD>
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD>:
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD>:
|
||||||
* <20><><EFBFBD> <20>ᯥ譮<E1AFA5> <20><><EFBFBD><EFBFBD>㧪<EFBFBD> ᪨<><E1AAA8> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
* <20><><EFBFBD> <20>ᯥ譮<E1AFA5> <20><><EFBFBD><EFBFBD>㧪<EFBFBD> ᪨<><E1AAA8> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> (ᮡ<>⨥ 1).
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> (ᮡ<>⨥ 1).
|
||||||
@@ -4064,11 +4091,14 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
* /CD0/1, /CD1/1, /CD2/1, /CD3/1 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>㯠 ᮮ⢥<E1AEAE><E2A2A5>⢥<EFBFBD><E2A2A5><EFBFBD>
|
* /CD0/1, /CD1/1, /CD2/1, /CD3/1 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>㯠 ᮮ⢥<E1AEAE><E2A2A5>⢥<EFBFBD><E2A2A5><EFBFBD>
|
||||||
<20> CD <20><> IDE0 (Primary Master), IDE1 (Primary Slave),
|
<20> CD <20><> IDE0 (Primary Master), IDE1 (Primary Slave),
|
||||||
IDE2 (Secondary Master), IDE3 (Secondary Slave)
|
IDE2 (Secondary Master), IDE3 (Secondary Slave)
|
||||||
|
* /SYS - <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD> <20><><EFBFBD>筮<EFBFBD> <20><><EFBFBD><EFBFBD>㧪<EFBFBD> <20><><EFBFBD>⥬<EFBFBD>
|
||||||
|
<20> <20><>᪥<EFBFBD><E1AAA5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⭮ /RD/1
|
||||||
<EFBFBD>ਬ<EFBFBD><EFBFBD><EFBFBD>:
|
<EFBFBD>ਬ<EFBFBD><EFBFBD><EFBFBD>:
|
||||||
* '/rd/1/kernel.asm',0
|
* '/rd/1/kernel.asm',0
|
||||||
* '/HD0/1/kernel.asm',0
|
* '/HD0/1/kernel.asm',0
|
||||||
* '/hd0/2/menuet/pics/tanzania.bmp',0
|
* '/hd0/2/menuet/pics/tanzania.bmp',0
|
||||||
* '/hd0/1/Program files/NameOfProgram/SomeFile.SomeExtension',0
|
* '/hd0/1/Program files/NameOfProgram/SomeFile.SomeExtension',0
|
||||||
|
* '/sys/MySuperApp.ini',0
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㯭<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨:
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㯭<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨:
|
||||||
* <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 0 - <20>⥭<EFBFBD><E2A5AD> 䠩<><E4A0A9>
|
* <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 0 - <20>⥭<EFBFBD><E2A5AD> 䠩<><E4A0A9>
|
||||||
* <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 1 - <20>⥭<EFBFBD><E2A5AD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
* <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 1 - <20>⥭<EFBFBD><E2A5AD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
SYSTEM FUNCTIONS of OS Kolibri 0.6.5.0
|
SYSTEM FUNCTIONS of OS Kolibri 0.7.0.0
|
||||||
|
|
||||||
Number of the function is located in the register eax.
|
Number of the function is located in the register eax.
|
||||||
The call of the system function is executed by "int 0x40" command.
|
The call of the system function is executed by "int 0x40" command.
|
||||||
@@ -567,6 +567,33 @@ Remarks:
|
|||||||
* For update of the screen (after completion of a series of commands
|
* For update of the screen (after completion of a series of commands
|
||||||
working with a background) call subfunction 3.
|
working with a background) call subfunction 3.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
===================== Function 15, subfunction 6 =====================
|
||||||
|
======== Map background data to the address space of process. ========
|
||||||
|
======================================================================
|
||||||
|
Parameters:
|
||||||
|
* eax = 15 - function number
|
||||||
|
* ebx = 6 - subfunction number
|
||||||
|
Returned value:
|
||||||
|
* eax = pointer to background data, 0 if error
|
||||||
|
Remarks:
|
||||||
|
* Mapped data are available for read and write.
|
||||||
|
* Size of background data is 3*xsize*ysize. The system blocks
|
||||||
|
changes of background sizes while process works with mapped data.
|
||||||
|
* Color of each pixel is stored as 3-bytes value BBGGRR.
|
||||||
|
* Pixels of the background image are written sequentially
|
||||||
|
from left to right, from up to down.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
===== Function 15, subfunction 7 - close mapped background data. =====
|
||||||
|
======================================================================
|
||||||
|
Parameters:
|
||||||
|
* eax = 15 - function number
|
||||||
|
* ebx = 7 - subfunction number
|
||||||
|
* ecx = pointer to mapped data
|
||||||
|
Returned value:
|
||||||
|
* eax = 1 - success, 0 - error
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
=============== Function 16 - save ramdisk on a floppy. ==============
|
=============== Function 16 - save ramdisk on a floppy. ==============
|
||||||
======================================================================
|
======================================================================
|
||||||
@@ -4025,11 +4052,14 @@ one of
|
|||||||
* /CD0/1, /CD1/1, /CD2/1, /CD3/1 to access accordingly to
|
* /CD0/1, /CD1/1, /CD2/1, /CD3/1 to access accordingly to
|
||||||
CD on IDE0 (Primary Master), IDE1 (Primary Slave),
|
CD on IDE0 (Primary Master), IDE1 (Primary Slave),
|
||||||
IDE2 (Secondary Master), IDE3 (Secondary Slave)
|
IDE2 (Secondary Master), IDE3 (Secondary Slave)
|
||||||
|
* /SYS means system folder; with the usual boot (from floppy)
|
||||||
|
is equivalent to /RD/1
|
||||||
Examples:
|
Examples:
|
||||||
* '/rd/1/kernel.asm',0
|
* '/rd/1/kernel.asm',0
|
||||||
* '/HD0/1/kernel.asm',0
|
* '/HD0/1/kernel.asm',0
|
||||||
* '/hd0/2/menuet/pics/tanzania.bmp',0
|
* '/hd0/2/menuet/pics/tanzania.bmp',0
|
||||||
* '/hd0/1/Program files/NameOfProgram/SomeFile.SomeExtension',0
|
* '/hd0/1/Program files/NameOfProgram/SomeFile.SomeExtension',0
|
||||||
|
* '/sys/MySuperApp.ini',0
|
||||||
Available subfunctions:
|
Available subfunctions:
|
||||||
* subfunction 0 - read file
|
* subfunction 0 - read file
|
||||||
* subfunction 1 - read folder
|
* subfunction 1 - read folder
|
||||||
|
@@ -2346,6 +2346,8 @@ sys_cachetodiskette:
|
|||||||
|
|
||||||
uglobal
|
uglobal
|
||||||
; bgrchanged dd 0x0
|
; bgrchanged dd 0x0
|
||||||
|
bgrlock db 0
|
||||||
|
bgrlockpid dd 0
|
||||||
endg
|
endg
|
||||||
|
|
||||||
sys_background:
|
sys_background:
|
||||||
@@ -2356,6 +2358,14 @@ sys_background:
|
|||||||
je sbgrr
|
je sbgrr
|
||||||
cmp ecx,0
|
cmp ecx,0
|
||||||
je sbgrr
|
je sbgrr
|
||||||
|
@@:
|
||||||
|
mov al, 1
|
||||||
|
xchg [bgrlock], al
|
||||||
|
test al, al
|
||||||
|
jz @f
|
||||||
|
call change_task
|
||||||
|
jmp @b
|
||||||
|
@@:
|
||||||
mov [BgrDataWidth],ebx
|
mov [BgrDataWidth],ebx
|
||||||
mov [BgrDataHeight],ecx
|
mov [BgrDataHeight],ecx
|
||||||
; mov [bgrchanged],1
|
; mov [bgrchanged],1
|
||||||
@@ -2379,12 +2389,13 @@ sys_background:
|
|||||||
lea eax,[eax*3]
|
lea eax,[eax*3]
|
||||||
mov [mem_BACKGROUND],eax
|
mov [mem_BACKGROUND],eax
|
||||||
; get memory for new background
|
; get memory for new background
|
||||||
stdcall kernel_alloc, [mem_BACKGROUND]
|
stdcall kernel_alloc, eax
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .exit_mem
|
jz .exit_mem
|
||||||
mov [img_background], eax
|
mov [img_background], eax
|
||||||
.exit_mem:
|
.exit_mem:
|
||||||
popad
|
popad
|
||||||
|
mov [bgrlock], 0
|
||||||
|
|
||||||
sbgrr:
|
sbgrr:
|
||||||
ret
|
ret
|
||||||
@@ -2444,6 +2455,84 @@ draw_background_temp:
|
|||||||
ret
|
ret
|
||||||
nosb5:
|
nosb5:
|
||||||
|
|
||||||
|
cmp eax, 6
|
||||||
|
jnz nosb6
|
||||||
|
@@:
|
||||||
|
mov al, 1
|
||||||
|
xchg [bgrlock], al
|
||||||
|
test al, al
|
||||||
|
jz @f
|
||||||
|
call change_task
|
||||||
|
jmp @b
|
||||||
|
@@:
|
||||||
|
mov eax, [CURRENT_TASK]
|
||||||
|
mov [bgrlockpid], eax
|
||||||
|
stdcall user_alloc, [mem_BACKGROUND]
|
||||||
|
mov [esp+36], eax
|
||||||
|
test eax, eax
|
||||||
|
jz .nomem
|
||||||
|
mov ebx, eax
|
||||||
|
shr ebx, 12
|
||||||
|
or dword [page_tabs+(ebx-1)*4], DONT_FREE_BLOCK
|
||||||
|
mov esi, [img_background]
|
||||||
|
shr esi, 12
|
||||||
|
mov ecx, [mem_BACKGROUND]
|
||||||
|
add ecx, 0xFFF
|
||||||
|
shr ecx, 12
|
||||||
|
.z:
|
||||||
|
mov eax, [page_tabs+ebx*4]
|
||||||
|
test al, 1
|
||||||
|
jz @f
|
||||||
|
call free_page
|
||||||
|
@@:
|
||||||
|
mov eax, [page_tabs+esi*4]
|
||||||
|
or al, PG_UW
|
||||||
|
mov [page_tabs+ebx*4], eax
|
||||||
|
mov eax, ebx
|
||||||
|
shl eax, 12
|
||||||
|
invlpg [eax]
|
||||||
|
inc ebx
|
||||||
|
inc esi
|
||||||
|
loop .z
|
||||||
|
ret
|
||||||
|
.nomem:
|
||||||
|
and [bgrlockpid], 0
|
||||||
|
mov [bgrlock], 0
|
||||||
|
nosb6:
|
||||||
|
cmp eax, 7
|
||||||
|
jnz nosb7
|
||||||
|
cmp [bgrlock], 0
|
||||||
|
jz .err
|
||||||
|
mov eax, [CURRENT_TASK]
|
||||||
|
cmp [bgrlockpid], eax
|
||||||
|
jnz .err
|
||||||
|
mov eax, ebx
|
||||||
|
shr eax, 12
|
||||||
|
mov ecx, [page_tabs+(eax-1)*4]
|
||||||
|
test cl, USED_BLOCK+DONT_FREE_BLOCK
|
||||||
|
jz .err
|
||||||
|
jnp .err
|
||||||
|
push eax
|
||||||
|
shr ecx, 12
|
||||||
|
@@:
|
||||||
|
and dword [page_tabs+eax*4], 0
|
||||||
|
mov edx, eax
|
||||||
|
shl edx, 12
|
||||||
|
invlpg [edx]
|
||||||
|
inc eax
|
||||||
|
loop @b
|
||||||
|
pop eax
|
||||||
|
and dword [page_tabs+(eax-1)*4], not DONT_FREE_BLOCK
|
||||||
|
stdcall user_free, ebx
|
||||||
|
mov [esp+36], eax
|
||||||
|
and [bgrlockpid], 0
|
||||||
|
mov [bgrlock], 0
|
||||||
|
ret
|
||||||
|
.err:
|
||||||
|
and dword [esp+36], 0
|
||||||
|
ret
|
||||||
|
|
||||||
|
nosb7:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
@@ -862,20 +862,24 @@ vesa20_drawbackground_stretch:
|
|||||||
call [disable_mouse]
|
call [disable_mouse]
|
||||||
pushad
|
pushad
|
||||||
; Helper variables
|
; Helper variables
|
||||||
|
; calculate 2^32*(BgrDataWidth-1) mod (ScreenWidth-1)
|
||||||
mov eax, [BgrDataWidth]
|
mov eax, [BgrDataWidth]
|
||||||
|
dec eax
|
||||||
xor edx, edx
|
xor edx, edx
|
||||||
mov ecx, [ScreenWidth]
|
div dword [ScreenWidth]
|
||||||
inc ecx
|
push eax ; high
|
||||||
div ecx
|
xor eax, eax
|
||||||
push eax ; quo
|
div dword [ScreenWidth]
|
||||||
push edx ; rem
|
push eax ; low
|
||||||
|
; the same for height
|
||||||
mov eax, [BgrDataHeight]
|
mov eax, [BgrDataHeight]
|
||||||
|
dec eax
|
||||||
xor edx, edx
|
xor edx, edx
|
||||||
mov ecx, [ScreenHeight]
|
div dword [ScreenHeight]
|
||||||
inc ecx
|
push eax ; high
|
||||||
div ecx
|
xor eax, eax
|
||||||
push eax
|
div dword [ScreenHeight]
|
||||||
push edx
|
push eax ; low
|
||||||
; External loop for all y from start to end
|
; External loop for all y from start to end
|
||||||
mov ebx, [draw_data+32+RECT.top] ; y start
|
mov ebx, [draw_data+32+RECT.top] ; y start
|
||||||
mov ebp, [draw_data+32+RECT.left] ; x start
|
mov ebp, [draw_data+32+RECT.left] ; x start
|
||||||
@@ -897,83 +901,76 @@ vesa20_drawbackground_stretch:
|
|||||||
xchg edi, ebp
|
xchg edi, ebp
|
||||||
; Now eax=x, ebx=y, edi->output, ebp=offset in WinMapAddress
|
; Now eax=x, ebx=y, edi->output, ebp=offset in WinMapAddress
|
||||||
push ebx
|
push ebx
|
||||||
|
push eax
|
||||||
; 2) Calculate offset in background memory block
|
; 2) Calculate offset in background memory block
|
||||||
push eax
|
|
||||||
mov eax, ebx
|
mov eax, ebx
|
||||||
mul dword [BgrDataHeight]
|
imul ebx, dword [esp+12]
|
||||||
mov ecx, [ScreenHeight]
|
mul dword [esp+8]
|
||||||
inc ecx
|
add edx, ebx ; edx:eax = y * 2^32*(BgrDataHeight-1)/(ScreenHeight-1)
|
||||||
div ecx ; eax := y * BgrDataHeight / ScreenHeight
|
mov esi, edx
|
||||||
; edx := (y * BgrDataHeight) mod ScreenHeight
|
imul esi, [BgrDataWidth]
|
||||||
mov esi, eax
|
|
||||||
pop eax
|
|
||||||
push edx ; dword [esp] = (y * BgrDataHeight) mod ScreenHeight
|
|
||||||
; dword [esp+4] = y * BgrDataHeight / ScreenHeight
|
|
||||||
push eax
|
|
||||||
mov ecx, [BgrDataWidth]
|
|
||||||
lea edx, [ecx*3]
|
|
||||||
imul edx, [BgrDataHeight]
|
|
||||||
add edx, [img_background]
|
|
||||||
push edx
|
push edx
|
||||||
mul ecx
|
push eax
|
||||||
imul esi, ecx
|
mov eax, [esp+8]
|
||||||
dec ecx
|
mul dword [esp+28]
|
||||||
push ecx
|
push eax
|
||||||
mov ecx, [ScreenWidth]
|
mov eax, [esp+12]
|
||||||
inc ecx
|
mul dword [esp+28]
|
||||||
div ecx ; eax := x * BgrDataWidth / ScreenWidth
|
add [esp], edx
|
||||||
; edx := (x * BgrDataWidth) mod ScreenWidth
|
pop edx ; edx:eax = x * 2^32*(BgrDataWidth-1)/(ScreenWidth-1)
|
||||||
add esi, eax
|
add esi, edx
|
||||||
lea esi, [esi*3]
|
lea esi, [esi*3]
|
||||||
add esi, [img_background]
|
add esi, [img_background]
|
||||||
push ecx edx esi
|
mov ecx, eax
|
||||||
|
push eax edx esi
|
||||||
; 3) Loop through redraw rectangle and copy background data
|
; 3) Loop through redraw rectangle and copy background data
|
||||||
; Registers meaning:
|
; Registers meaning:
|
||||||
; ecx = (x * BgrDataWidth) / ScreenWidth
|
; edx:ecx = x * 2^32 * (BgrDataWidth-1) / (ScreenWidth-1)
|
||||||
; edx = (x * BgrDataWidth) mod ScreenWidth (used to fast recalculating of ecx,esi)
|
|
||||||
; esi -> bgr memory, edi -> output
|
; esi -> bgr memory, edi -> output
|
||||||
; ebp = offset in WinMapAddress
|
; ebp = offset in WinMapAddress
|
||||||
; dword [esp] = saved esi
|
; dword [esp] = saved esi
|
||||||
; dword [esp+4] = saved edx
|
; dword [esp+4] = saved edx
|
||||||
; dword [esp+8] = saved ecx
|
; dword [esp+8] = saved ecx
|
||||||
; dword [esp+12] = BgrDataWidth-1, x-limit for overlapping of points
|
; qword [esp+12] = y * 2^32 * (BgrDataHeight-1) / (ScreenHeight-1)
|
||||||
; dword [esp+16] = end of bgr memory (defines y-limit for overlapping of points)
|
|
||||||
; dword [esp+20] = x
|
; dword [esp+20] = x
|
||||||
; dword [esp+24] = (y * BgrDataHeight) mod ScreenHeight (used to fast recalculating of esi)
|
; dword [esp+24] = y
|
||||||
; dword [esp+28] = y
|
|
||||||
; precalculated constants:
|
; precalculated constants:
|
||||||
; dword [esp+32] = BgrDataHeight mod ScreenHeight
|
; qword [esp+28] = 2^32*(BgrDataHeight-1)/(ScreenHeight-1)
|
||||||
; dword [esp+36] = BgrDataHeight div ScreenHeight
|
; qword [esp+36] = 2^32*(BgrDataWidth-1)/(ScreenWidth-1)
|
||||||
; dword [esp+40] = BgrDataWidth mod ScreenWidth
|
|
||||||
; dword [esp+44] = BgrDataWidth div ScreenWidth
|
|
||||||
sdp3:
|
sdp3:
|
||||||
add edx, [esp+40]
|
|
||||||
cmp [ebp+WinMapAddress], byte 1
|
cmp [ebp+WinMapAddress], byte 1
|
||||||
jnz snbgp
|
jnz snbgp
|
||||||
mov al, [esi+2]
|
mov al, [esi+2]
|
||||||
shl eax, 16
|
shl eax, 16
|
||||||
mov ax, [esi]
|
mov ax, [esi]
|
||||||
cmp ecx, [esp+12]
|
test ecx, ecx
|
||||||
jae @f
|
jz @f
|
||||||
cmp edx, [ScreenWidth]
|
|
||||||
jb @f
|
|
||||||
mov ebx, [esi+2]
|
mov ebx, [esi+2]
|
||||||
shr ebx, 8
|
shr ebx, 8
|
||||||
call overlapping_of_points
|
call overlapping_of_points
|
||||||
@@:
|
@@:
|
||||||
mov ebx, [esp+24]
|
cmp dword [esp+12], 0
|
||||||
add ebx, [esp+32]
|
jz .novert
|
||||||
cmp ebx, [ScreenHeight]
|
|
||||||
jbe @f
|
|
||||||
mov ebx, [BgrDataWidth]
|
mov ebx, [BgrDataWidth]
|
||||||
lea ebx, [ebx*3]
|
lea ebx, [ebx*3]
|
||||||
add ebx, esi
|
add ebx, esi
|
||||||
cmp ebx, [esp+16]
|
push eax
|
||||||
jae @f
|
mov al, [ebx+2]
|
||||||
mov ebx, [ebx-1]
|
shl eax, 16
|
||||||
|
mov ax, [ebx]
|
||||||
|
test ecx, ecx
|
||||||
|
jz .nohorz
|
||||||
|
mov ebx, [ebx+2]
|
||||||
shr ebx, 8
|
shr ebx, 8
|
||||||
call overlapping_of_points
|
call overlapping_of_points
|
||||||
@@:
|
.nohorz:
|
||||||
|
mov ebx, eax
|
||||||
|
pop eax
|
||||||
|
push ecx
|
||||||
|
mov ecx, [esp+4+12]
|
||||||
|
call overlapping_of_points
|
||||||
|
pop ecx
|
||||||
|
.novert:
|
||||||
mov [edi], ax
|
mov [edi], ax
|
||||||
shr eax, 16
|
shr eax, 16
|
||||||
mov [edi+2], al
|
mov [edi+2], al
|
||||||
@@ -986,23 +983,18 @@ snbgp:
|
|||||||
mov [esp+20], eax
|
mov [esp+20], eax
|
||||||
cmp eax, [draw_data+32+RECT.right]
|
cmp eax, [draw_data+32+RECT.right]
|
||||||
ja sdp4
|
ja sdp4
|
||||||
mov eax, [esp+44]
|
add ecx, [esp+36]
|
||||||
add ecx, eax
|
mov eax, edx
|
||||||
|
adc edx, [esp+40]
|
||||||
|
sub eax, edx
|
||||||
lea eax, [eax*3]
|
lea eax, [eax*3]
|
||||||
add esi, eax
|
sub esi, eax
|
||||||
; add edx, [esp+40]
|
|
||||||
cmp edx, [ScreenWidth]
|
|
||||||
jbe sdp3
|
|
||||||
sub edx, [ScreenWidth]
|
|
||||||
add ecx, 1
|
|
||||||
add esi, 3
|
|
||||||
sub edx, 1
|
|
||||||
jmp sdp3
|
jmp sdp3
|
||||||
sdp4:
|
sdp4:
|
||||||
; next y
|
; next y
|
||||||
mov ebx, [esp+28]
|
mov ebx, [esp+24]
|
||||||
add ebx, 1
|
add ebx, 1
|
||||||
mov [esp+28], ebx
|
mov [esp+24], ebx
|
||||||
cmp ebx, [draw_data+32+RECT.bottom]
|
cmp ebx, [draw_data+32+RECT.bottom]
|
||||||
ja sdpdone
|
ja sdpdone
|
||||||
; advance edi, ebp to next scan line
|
; advance edi, ebp to next scan line
|
||||||
@@ -1019,56 +1011,55 @@ sdp4:
|
|||||||
@@:
|
@@:
|
||||||
add edi, [BytesPerScanLine]
|
add edi, [BytesPerScanLine]
|
||||||
; restore ecx,edx; advance esi to next background line
|
; restore ecx,edx; advance esi to next background line
|
||||||
|
mov eax, [esp+28]
|
||||||
|
mov ebx, [esp+32]
|
||||||
|
add [esp+12], eax
|
||||||
|
mov eax, [esp+16]
|
||||||
|
adc [esp+16], ebx
|
||||||
pop esi edx ecx
|
pop esi edx ecx
|
||||||
push ecx edx
|
push ecx edx
|
||||||
xor ebx, ebx
|
sub eax, [esp+16-4]
|
||||||
mov eax, [esp+24-4]
|
lea eax, [eax*3]
|
||||||
add eax, [esp+32-4]
|
imul eax, [BgrDataWidth]
|
||||||
cmp eax, [ScreenHeight]
|
sub esi, eax
|
||||||
jbe @f
|
|
||||||
sub eax, [ScreenHeight]
|
|
||||||
mov ebx, 1
|
|
||||||
sub eax, ebx
|
|
||||||
@@:
|
|
||||||
mov [esp+24-4], eax
|
|
||||||
add ebx, [esp+36-4]
|
|
||||||
lea ebx, [ebx*3]
|
|
||||||
imul ebx, [BgrDataWidth]
|
|
||||||
add esi, ebx
|
|
||||||
push esi
|
push esi
|
||||||
mov eax, [draw_data+32+RECT.left]
|
mov eax, [draw_data+32+RECT.left]
|
||||||
mov [esp+20], eax
|
mov [esp+20], eax
|
||||||
jmp sdp3
|
jmp sdp3
|
||||||
sdpdone:
|
sdpdone:
|
||||||
add esp, 48
|
add esp, 44
|
||||||
popad
|
popad
|
||||||
mov [EGA_counter],1
|
mov [EGA_counter],1
|
||||||
call VGA_drawbackground
|
call VGA_drawbackground
|
||||||
ret
|
ret
|
||||||
|
|
||||||
overlapping_of_points:
|
overlapping_of_points:
|
||||||
push ecx edx edi
|
push ecx edx
|
||||||
mov ecx, eax
|
mov edx, eax
|
||||||
mov edx, ebx
|
push esi
|
||||||
|
shr ecx, 24
|
||||||
|
mov esi, ecx
|
||||||
|
mov ecx, ebx
|
||||||
|
movzx ebx, dl
|
||||||
|
movzx eax, cl
|
||||||
|
sub eax, ebx
|
||||||
|
movzx ebx, dh
|
||||||
|
imul eax, esi
|
||||||
|
add dl, ah
|
||||||
|
movzx eax, ch
|
||||||
|
sub eax, ebx
|
||||||
|
imul eax, esi
|
||||||
|
add dh, ah
|
||||||
|
ror ecx, 16
|
||||||
|
ror edx, 16
|
||||||
movzx eax, cl
|
movzx eax, cl
|
||||||
movzx ebx, dl
|
movzx ebx, dl
|
||||||
add eax, ebx
|
sub eax, ebx
|
||||||
rcr eax, 1
|
imul eax, esi
|
||||||
movzx edi, ax
|
pop esi
|
||||||
movzx eax, ch
|
add dl, ah
|
||||||
movzx ebx, dh
|
mov eax, edx
|
||||||
add eax, ebx
|
pop edx
|
||||||
rcr eax, 1
|
|
||||||
ror edi, 8
|
|
||||||
add edi, eax
|
|
||||||
shr ecx, 8
|
|
||||||
shr edx, 8
|
|
||||||
movzx eax, ch
|
|
||||||
movzx ebx, dh
|
|
||||||
add eax, ebx
|
|
||||||
rcr eax, 1
|
|
||||||
ror edi, 8
|
|
||||||
add eax, edi
|
|
||||||
ror eax, 16
|
ror eax, 16
|
||||||
pop edi edx ecx
|
pop ecx
|
||||||
ret
|
ret
|
||||||
|
Reference in New Issue
Block a user