feat: mise a jour des fonctions "decompressrle" et "compressrle" au format STDCALL/CE

This commit is contained in:
Nicolas Hordé 2007-03-28 15:53:26 +00:00
parent 4e91970166
commit 2f20a86d11
1 changed files with 43 additions and 42 deletions

View File

@ -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 dcompress BP compress ;compress ds:si en es:di taille cx dcompress 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