245 lines
4.1 KiB
NASM
245 lines
4.1 KiB
NASM
;----------------------------------------------------------------------------
|
|
;
|
|
;' ADFLI.ASM 386
|
|
;' (c) Adeline 1994
|
|
;
|
|
;----------------------------------------------------------------------------
|
|
.386P
|
|
.model SMALL, SYSCALL
|
|
;----------------------------------------------------------------------------
|
|
.data
|
|
;----------------------------------------------------------------------------
|
|
include \projet\lib386\lib_svga\svga.ash
|
|
;----------------------------------------------------------------------------
|
|
.code
|
|
|
|
public NoLanguage DrawFrame
|
|
public NoLanguage UpdateFrame
|
|
public NoLanguage BlackFrame
|
|
public NoLanguage CopyFrame
|
|
|
|
; public NoLanguage SetPal
|
|
; public NoLanguage CpyPal
|
|
|
|
;----------------------------------------------------------------------------
|
|
DrawFrame proc uses esi edi ebx,\
|
|
ptframe:DWORD, deltax:DWORD, deltay:DWORD
|
|
|
|
mov esi, ptframe
|
|
mov edi, Log
|
|
mov edx, edi
|
|
xor eax, eax
|
|
NewLine:
|
|
lodsb ; Nb Block
|
|
or al, al
|
|
je EndLine
|
|
mov bl, al
|
|
SameLine:
|
|
lodsb
|
|
test al, al
|
|
js short CopyPix ;
|
|
mov ecx, eax
|
|
;----------------------
|
|
lodsb
|
|
rep stosb
|
|
;----------------------
|
|
dec bl
|
|
jne short SameLine
|
|
jmp short EndLine
|
|
CopyPix:
|
|
;----------------------
|
|
neg al
|
|
mov ecx, eax
|
|
shr ecx, 2
|
|
rep movsd
|
|
mov cl, al
|
|
and cl, 11b
|
|
rep movsb
|
|
;----------------------
|
|
dec bl
|
|
jne short SameLine
|
|
|
|
EndLine:
|
|
add edx, [deltax]
|
|
mov edi, edx
|
|
dec dword ptr [deltay]
|
|
jne short NewLine
|
|
EndDrawFrame:
|
|
ret
|
|
DrawFrame endp
|
|
;----------------------------------------------------------------------------
|
|
UpdateFrame proc uses esi edi ebx,\
|
|
ptframe:DWORD, deltax:DWORD
|
|
|
|
local cptline :WORD
|
|
|
|
mov esi, ptframe
|
|
mov edi, Log
|
|
xor eax, eax
|
|
|
|
lodsw
|
|
mov edx, deltax
|
|
imul edx
|
|
add edi, eax
|
|
mov edx, edi
|
|
lodsw
|
|
mov [cptline], ax
|
|
xor eax, eax
|
|
NewLine:
|
|
lodsb ; Nb Block
|
|
or al, al
|
|
je EndLine
|
|
mov bl, al
|
|
SameLine:
|
|
lodsb
|
|
add edi, eax
|
|
|
|
lodsb
|
|
test al, al
|
|
js short RepeatPix ;
|
|
|
|
mov ecx, eax
|
|
shr ecx, 2
|
|
rep movsd
|
|
mov cl, al
|
|
and cl, 11b
|
|
rep movsb
|
|
|
|
dec bl
|
|
jne short SameLine
|
|
jmp short EndLine
|
|
RepeatPix:
|
|
neg al
|
|
mov ecx, eax
|
|
lodsb
|
|
rep stosb
|
|
|
|
dec bl
|
|
jne short SameLine
|
|
EndLine:
|
|
add edx, deltax
|
|
mov edi, edx
|
|
dec word ptr [cptline]
|
|
jne short NewLine
|
|
EndUpdateFrame:
|
|
ret
|
|
UpdateFrame endp
|
|
;----------------------------------------------------------------------------
|
|
BlackFrame proc uses edi
|
|
|
|
mov edi, Log
|
|
xor eax, eax
|
|
mov edx, 200
|
|
NextLine:
|
|
mov ecx, 320/4
|
|
rep stosd
|
|
add edi, 320
|
|
dec edx
|
|
jne NextLine
|
|
ret
|
|
BlackFrame endp
|
|
;----------------------------------------------------------------------------
|
|
CopyFrame proc uses esi edi,\
|
|
ptsrc:DWORD
|
|
|
|
mov esi, ptsrc
|
|
mov edi, Log
|
|
mov edx, 200
|
|
NextLine:
|
|
mov ecx, 320/4
|
|
rep movsd
|
|
add edi, 320
|
|
dec edx
|
|
jne NextLine
|
|
|
|
ret
|
|
CopyFrame endp
|
|
;----------------------------------------------------------------------------
|
|
|
|
comment #
|
|
SetPal proc uses esi edi ebx,\
|
|
ptsrc:DWORD
|
|
|
|
mov esi, ptsrc
|
|
xor edi, edi
|
|
|
|
lodsw
|
|
mov bx, ax
|
|
test bx, bx
|
|
je EndSetPal
|
|
Again:
|
|
xor eax, eax
|
|
lodsb
|
|
add di, ax
|
|
lodsb
|
|
mov ecx, eax
|
|
or ecx, ecx
|
|
jne PlusLoin
|
|
mov ecx, 256
|
|
PlusLoin:
|
|
mov dx, 3C8h
|
|
mov ax, di
|
|
out dx, al
|
|
inc di
|
|
inc dx
|
|
lodsb
|
|
out dx, al
|
|
lodsb
|
|
out dx, al
|
|
lodsb
|
|
out dx, al
|
|
loop PlusLoin
|
|
|
|
dec bx
|
|
jne Again
|
|
EndSetPal:
|
|
ret
|
|
SetPal endp
|
|
|
|
;----------------------------------------------------------------------------
|
|
CpyPal proc uses esi edi ebx,\
|
|
ptsrc:DWORD, ptdst:DWORD
|
|
|
|
mov esi, ptsrc
|
|
mov edi, ptdst
|
|
lodsw
|
|
mov bx, ax
|
|
test bx, bx
|
|
je EndCpyPal
|
|
Again:
|
|
xor eax, eax
|
|
lodsb
|
|
add di, ax
|
|
add di, ax
|
|
add di, ax
|
|
lodsb
|
|
or al, al
|
|
jne PlusLoin
|
|
mov eax, 256
|
|
PlusLoin:
|
|
mov ecx, eax
|
|
add ecx, eax
|
|
add ecx, eax
|
|
mfp0: lodsb
|
|
shl al, 2
|
|
stosb
|
|
loop mfp0
|
|
; rep movsb
|
|
dec bx
|
|
jne Again
|
|
EndCpyPal:
|
|
ret
|
|
CpyPal endp
|
|
|
|
#
|
|
|
|
;----------------------------------------------------------------------------
|
|
; The
|
|
End
|
|
|
|
|
|
|
|
|
|
|
|
|