fix: correction dans la fonction "decompressrle" Modifications de "projfile" et de "execfile" afin de pouvoir gérer les appels récurant en libraire.
This commit is contained in:
parent
ab40064c1f
commit
db544a7cbe
|
@ -158,17 +158,19 @@ PROC execfile FAR
|
||||||
ARG @file:word
|
ARG @file:word
|
||||||
pushad
|
pushad
|
||||||
push ds es fs gs
|
push ds es fs gs
|
||||||
call projfile,[@file]
|
mov di,[@file]
|
||||||
jc @@reallyerrornoblock
|
call uppercase,di
|
||||||
|
call projfile,di
|
||||||
|
;jc @@reallyerrornoblock
|
||||||
|
call [cs:mbfind],di
|
||||||
|
jc @@reallyerror
|
||||||
call [cs:mbchown],ax,[word ptr ss:bp+4]
|
call [cs:mbchown],ax,[word ptr ss:bp+4]
|
||||||
jc @@reallyerror
|
jc @@reallyerror
|
||||||
call [cs:mbloadfuncs],ax
|
|
||||||
jc @@reallyerror
|
|
||||||
call [cs:mbloadsection],ax
|
|
||||||
jc @@reallyerror
|
|
||||||
push ax
|
|
||||||
push ax
|
push ax
|
||||||
pop ds
|
pop ds
|
||||||
|
cmp [ds:0x0],'EC'
|
||||||
|
jne @@reallyerror
|
||||||
|
push ax
|
||||||
push cs
|
push cs
|
||||||
push offset @@arrive
|
push offset @@arrive
|
||||||
push ds
|
push ds
|
||||||
|
@ -191,9 +193,10 @@ PROC execfile FAR
|
||||||
sti
|
sti
|
||||||
db 0CBh
|
db 0CBh
|
||||||
@@arrive:
|
@@arrive:
|
||||||
cli
|
;cli
|
||||||
pop ax
|
;pop ax
|
||||||
call [cs:mbfree],ax
|
;call [cs:mbfree],ax
|
||||||
|
call [cs:mbfree]
|
||||||
pop gs fs es ds
|
pop gs fs es ds
|
||||||
popad
|
popad
|
||||||
clc
|
clc
|
||||||
|
@ -208,8 +211,8 @@ PROC execfile FAR
|
||||||
endp execfile
|
endp execfile
|
||||||
|
|
||||||
;============projfile (Fonction 17)===============
|
;============projfile (Fonction 17)===============
|
||||||
;Charge le fichier ds:%0 sur un bloc mémoire -> eax taille -> es bloc
|
;Charge le fichier ds:%0 sur un bloc mémoire -> eax taille
|
||||||
;-> ax bloc mémoire
|
;-> eax taille fichier
|
||||||
;<- Flag Carry si erreur
|
;<- Flag Carry si erreur
|
||||||
;=====================================================
|
;=====================================================
|
||||||
PROC projfile FAR
|
PROC projfile FAR
|
||||||
|
@ -235,13 +238,21 @@ USES cx,si,di,ds,es
|
||||||
jc @@errorload
|
jc @@errorload
|
||||||
mov eax,[es:(find di).result.filesize]
|
mov eax,[es:(find di).result.filesize]
|
||||||
call [cs:mbcreate],di,ax
|
call [cs:mbcreate],di,ax
|
||||||
|
jc @@errorload
|
||||||
|
call [cs:mbchown],ax,[word ptr ss:bp+4]
|
||||||
jc @@errorload
|
jc @@errorload
|
||||||
mov ds,ax
|
mov ds,ax
|
||||||
mov cx,[es:(find di).result.filegroup]
|
mov cx,[es:(find di).result.filegroup]
|
||||||
mov eax,[es:(find di).result.filesize]
|
mov eax,[es:(find di).result.filesize]
|
||||||
call loadway,cx,eax,0
|
call loadway,cx,eax,0
|
||||||
jc @@errorload
|
jc @@errorload
|
||||||
mov ax,ds
|
cmp [ds:0x0],'EC'
|
||||||
|
jne @@notace
|
||||||
|
call [cs:mbloadfuncs],ds
|
||||||
|
jc @@errorload
|
||||||
|
call [cs:mbloadsection],ds
|
||||||
|
jc @@errorload
|
||||||
|
@@notace:
|
||||||
clc
|
clc
|
||||||
ret
|
ret
|
||||||
@@errorload:
|
@@errorload:
|
||||||
|
@ -364,7 +375,7 @@ PROC cmpnames FAR
|
||||||
jmp @@itok
|
jmp @@itok
|
||||||
endp cmpnames
|
endp cmpnames
|
||||||
|
|
||||||
;charge le fichier de de groupe CX et de taille eax
|
;charge le fichier de de groupe %0 et de taille %1
|
||||||
PROC loadway NEAR
|
PROC loadway NEAR
|
||||||
ARG @sector:word,@size:dword,@offset:word
|
ARG @sector:word,@size:dword,@offset:word
|
||||||
USES eax,bx,cx,dx,si,di,ds,es
|
USES eax,bx,cx,dx,si,di,ds,es
|
||||||
|
@ -871,7 +882,7 @@ invert:
|
||||||
;=====================================================
|
;=====================================================
|
||||||
PROC decompressrle FAR
|
PROC decompressrle FAR
|
||||||
ARG @seg1:word,@off1:word,@seg2:word,@off2:word,@size:word
|
ARG @seg1:word,@off1:word,@seg2:word,@off2:word,@size:word
|
||||||
USES ax,cx,dx,si,di,ds,es
|
USES ecx,dx,si,di,ds,es
|
||||||
mov ds,[@seg1]
|
mov ds,[@seg1]
|
||||||
mov es,[@seg2]
|
mov es,[@seg2]
|
||||||
mov si,[@off1]
|
mov si,[@off1]
|
||||||
|
@ -906,6 +917,7 @@ PROC decompressrle FAR
|
||||||
dec dx
|
dec dx
|
||||||
jnz @@decompression
|
jnz @@decompression
|
||||||
@@thenen:
|
@@thenen:
|
||||||
|
xor eax,eax
|
||||||
mov ax,di
|
mov ax,di
|
||||||
sub ax,[@off2]
|
sub ax,[@off2]
|
||||||
clc
|
clc
|
||||||
|
|
Loading…
Reference in New Issue