Files
lba1-classic/LIB386/LIB_SVGA/S_BLOCK3.ASM
Gwen Gourevich c5f4f6ba25 Initial commit
2021-10-27 10:34:18 +02:00

76 lines
1.5 KiB
NASM

;----------------------------------------------------------------------------
; S_BLOCK.ASM 386
; (c) Adeline 1993
;----------------------------------------------------------------------------
.386P
jumps
.model SMALL, SYSCALL
.data
include f:\projet\lib386\lib_svga\svga.ash
;----------------------------------------------------------------------------
.code
public NoLanguage CopyBlockIncrust
;----------------------------------------------------------------------------
; CopyBlockIncrust( x0, y0, x1, y1, *src, xd, yd, *dst )
;
CopyBlockIncrust proc uses esi edi ebx ebp,\
x0:DWORD, y0:DWORD, x1:DWORD, y1:DWORD, src:DWORD,\
xd:DWORD, yd:DWORD, dst:DWORD
mov edx, x0
mov ecx, y0
mov ebx, x1
mov eax, y1
;----------------------
mov esi, TabOffLine[ecx*4] ; y0
add esi, src
add esi, edx ; SI Offset Src
mov edi, yd
mov edi, TabOffLine[edi*4]
add edi, dst
add edi, xd ; DI Offset Dst
sub ebx, edx
inc ebx ; BX Delta Y
sub eax, ecx
inc eax ; AX Delta X
mov ebp, eax
mov edx, Screen_X
sub edx, ebx ; DX Delta Screen
Again:
mov ecx, ebx
loopx: lodsb
or al, al
jz incrust
mov byte ptr[edi], al
incrust: inc edi
dec ecx
jnz loopx
add esi, edx
add edi, edx
dec ebp
jne short Again
CopyBlock_End: ret
CopyBlockIncrust endp
;----------------------------------------------------------------------------
; The
End