--- np2/win9x/dclockd.x86 2005/02/16 09:31:55 1.2 +++ np2/win9x/dclockd.x86 2011/02/02 13:50:29 1.4 @@ -13,7 +13,6 @@ DCLOCK_PATMAX equ 13 .drawing resw 1 .clk_x resb 1 .pad resb 1 -.dat endstruc struc dclockpos_t @@ -36,6 +35,7 @@ section .text global _dclock_make global _dclock_out8 global _dclock_out16 + global _dclock_out24 global _dclock_out32 extern _dclock extern _dclockpal @@ -173,7 +173,7 @@ _dclock_out8: push ebx push ebp mov ecx, [esp+16+4] sub dword [esp+16+8], byte DCLOCK_WIDTH - mov esi, _dclock + dclock_t.dat + mov esi, _dclock + dclock_t_size mov edi, _dclockpal + dclockpal_t.pal8 mov bh, 4 .lp1: mov bl, 3 @@ -207,7 +207,7 @@ _dclock_out16: push ebx push esi push edi push ebp - mov esi, _dclock + dclock_t.dat + mov esi, _dclock + dclock_t_size mov edi, _dclockpal + dclockpal_t.pal16 mov ecx, [esp+16+4] sub dword [esp+16+8], byte (DCLOCK_WIDTH * 2) @@ -239,11 +239,50 @@ _dclock_out16: push ebx ret align 16 +_dclock_out24: push ebx + push esi + push edi + push ebp + mov esi, _dclock + dclock_t_size + mov edi, _dclockpal + dclockpal_t.pal32 + mov ecx, [esp+16+4] + sub dword [esp+16+8], (DCLOCK_WIDTH * 3) + mov dh, 4 +.lp1: mov dl, 3 +.lp2: mov ebp, DCLOCK_YALIGN +.lp3: mov bl, [esi] + mov bh, 8 +.lp4: rcl bl, 1 + sbb eax, eax + and eax, [edi] + mov [ecx+0], al + shr eax, 8 + mov [ecx+1], al + mov [ecx+2], ah + add ecx, byte 3 + dec bh + jne short .lp4 + inc esi + dec ebp + jne short .lp3 + add ecx, [esp+16+8] + dec dl + jne short .lp2 + add edi, byte 4 + dec dh + jne short .lp1 + pop ebp + pop edi + pop esi + pop ebx + ret + + align 16 _dclock_out32: push ebx push esi push edi push ebp - mov esi, _dclock + dclock_t.dat + mov esi, _dclock + dclock_t_size mov edi, _dclockpal + dclockpal_t.pal32 mov ecx, [esp+16+4] sub dword [esp+16+8], (DCLOCK_WIDTH * 4) @@ -274,5 +313,3 @@ _dclock_out32: push ebx pop ebx ret - ends -