feat: mise a jour des fonctions "decompressrle" et "compressrle" au format STDCALL/CE
This commit is contained in:
parent
4e91970166
commit
2f20a86d11
|
@ -869,22 +869,26 @@ invert:
|
||||||
;-> AH=5
|
;-> AH=5
|
||||||
;<- Flag Carry si erreur, Flag Equal si secteurs égaux
|
;<- Flag Carry si erreur, Flag Equal si secteurs égaux
|
||||||
;=====================================================
|
;=====================================================
|
||||||
decompressrle:
|
PROC decompressrle FAR
|
||||||
push cx dx si di
|
ARG @seg1:word,@off1:word,@seg2:word,@off2:word,@size:word
|
||||||
mov dx,cx
|
USES ax,cx,dx,si,di,ds,es
|
||||||
mov bp,di
|
mov ds,[@seg1]
|
||||||
decompression:
|
mov es,[@seg2]
|
||||||
mov eax,[si]
|
mov si,[@off1]
|
||||||
|
mov di,[@off2]
|
||||||
|
mov dx,[@size]
|
||||||
|
@@decompression:
|
||||||
|
mov eax,[ds:si]
|
||||||
cmp al,'/'
|
cmp al,'/'
|
||||||
jne nocomp
|
jne @@nocomp
|
||||||
cmp si,07FFFh-6
|
cmp si,07FFFh-6
|
||||||
jae thenen
|
jae @@thenen
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
ror ecx,16
|
ror ecx,16
|
||||||
cmp cl,'*'
|
cmp cl,'*'
|
||||||
jne nocomp
|
jne @@nocomp
|
||||||
cmp [byte ptr si+4],'/'
|
cmp [byte ptr ds:si+4],'/'
|
||||||
jne nocomp
|
jne @@nocomp
|
||||||
mov al,ch
|
mov al,ch
|
||||||
mov cl,ah
|
mov cl,ah
|
||||||
xor ah,ah
|
xor ah,ah
|
||||||
|
@ -893,48 +897,45 @@ decompression:
|
||||||
rep stosb
|
rep stosb
|
||||||
add si,5
|
add si,5
|
||||||
sub dx,5
|
sub dx,5
|
||||||
jnz decompression
|
jnz @@decompression
|
||||||
jmp thenen
|
jmp @@thenen
|
||||||
nocomp:
|
@@nocomp:
|
||||||
mov [es:di],al
|
mov [es:di],al
|
||||||
inc si
|
inc si
|
||||||
inc di
|
inc di
|
||||||
dec dx
|
dec dx
|
||||||
jnz decompression
|
jnz @@decompression
|
||||||
thenen:
|
@@thenen:
|
||||||
mov ax,dx
|
mov ax,di
|
||||||
sub bp,di
|
sub ax,[@off2]
|
||||||
neg bp
|
|
||||||
clc
|
clc
|
||||||
pop di si dx cx
|
|
||||||
ret
|
ret
|
||||||
|
endp decompressrle
|
||||||
|
|
||||||
;=============CompressRle (Fonction 06H)==============
|
;=============CompressRle (Fonction 06H)==============
|
||||||
;compress ds:si en es:di taille cx d‚compress‚ BP compress‚
|
;compress ds:si en es:di taille cx d‚compress‚ BP compress‚
|
||||||
;-> AH=6
|
;-> AH=6
|
||||||
;<- Flag Carry si erreur, Flag Equal si secteurs égaux
|
;<- Flag Carry si erreur, Flag Equal si secteurs égaux
|
||||||
;=====================================================
|
;=====================================================
|
||||||
compressrle:
|
PROC compressrle FAR
|
||||||
push ax bx cx dx si di ds es
|
ARG @seg1:word,@off1:word,@seg2:word,@off2:word,@size:word
|
||||||
mov bp,di
|
USES ax,bx,cx,dx,si,di,ds,es
|
||||||
xchg si,di
|
mov es,[@seg1]
|
||||||
push es
|
mov ds,[@seg2]
|
||||||
push ds
|
mov di,[@off1]
|
||||||
pop es
|
mov si,[@off2]
|
||||||
pop ds
|
mov dx,[@size]
|
||||||
mov dx,cx
|
@@againcomp:
|
||||||
;mov bp,cx
|
|
||||||
againcomp:
|
|
||||||
mov bx,di
|
mov bx,di
|
||||||
mov al,[es:di]
|
mov al,[es:di]
|
||||||
mov cx,dx
|
mov cx,dx
|
||||||
cmp ch,0
|
cmp ch,0
|
||||||
je poo
|
je @@poo
|
||||||
mov cl,0ffh
|
mov cl,0ffh
|
||||||
;mov cx,bp
|
;mov cx,bp
|
||||||
;sub cx,di
|
;sub cx,di
|
||||||
;mov ah,cl
|
;mov ah,cl
|
||||||
poo:
|
@@poo:
|
||||||
mov ah,cl
|
mov ah,cl
|
||||||
inc di
|
inc di
|
||||||
xor ch,ch
|
xor ch,ch
|
||||||
|
@ -942,7 +943,7 @@ poo:
|
||||||
sub cl,ah
|
sub cl,ah
|
||||||
neg cl
|
neg cl
|
||||||
cmp cl,6
|
cmp cl,6
|
||||||
jbe nocomp2
|
jbe @@nocomp2
|
||||||
mov [dword ptr si],' * /'
|
mov [dword ptr si],' * /'
|
||||||
mov [byte ptr si+4],'/'
|
mov [byte ptr si+4],'/'
|
||||||
mov [si+1],cl
|
mov [si+1],cl
|
||||||
|
@ -951,21 +952,21 @@ poo:
|
||||||
dec di
|
dec di
|
||||||
xor ch,ch
|
xor ch,ch
|
||||||
sub dx,cx
|
sub dx,cx
|
||||||
jnz againcomp
|
jnz @@againcomp
|
||||||
jmp fini
|
jmp @@fini
|
||||||
nocomp2:
|
@@nocomp2:
|
||||||
mov [si],al
|
mov [si],al
|
||||||
inc si
|
inc si
|
||||||
inc bx
|
inc bx
|
||||||
mov di,bx
|
mov di,bx
|
||||||
dec dx
|
dec dx
|
||||||
jnz againcomp
|
jnz @@againcomp
|
||||||
fini:
|
@@fini:
|
||||||
sub bp,si
|
mov ax,si
|
||||||
neg bp
|
sub ax,[@off2]
|
||||||
clc
|
clc
|
||||||
pop es ds di si dx cx bx ax
|
|
||||||
ret
|
ret
|
||||||
|
endp compressrle
|
||||||
|
|
||||||
;=============Changedir (Fonction 13)==============
|
;=============Changedir (Fonction 13)==============
|
||||||
;Change le repertoire courant a DS:SI
|
;Change le repertoire courant a DS:SI
|
||||||
|
|
Loading…
Reference in New Issue