fix: correction d'un bogue dans la fonction verifysector et prise en compte du flag equal a la sortie du pilote

This commit is contained in:
Nicolas Hordé 2004-11-23 20:37:41 +00:00
parent 4a8effdfde
commit 2dbdb9c4c8
1 changed files with 11 additions and 10 deletions

View File

@ -36,15 +36,23 @@ noerrorint:
itsok: itsok:
push bp push bp
mov bp,sp ;On prend sp dans bp pour adresser la pile mov bp,sp ;On prend sp dans bp pour adresser la pile
jnc noerror ;La fonction appelée a renvoyer une erreur : Flag CARRY ? pushf
jnc noerror ;La fonction appelée a renvoyer une erreur : Flag CARRY ?
or byte ptr [bp+6],1b;Si oui on le retranscrit sur le registre FLAG qui sera dépilé lors du IRET or byte ptr [bp+6],1b;Si oui on le retranscrit sur le registre FLAG qui sera dépilé lors du IRET
;xor eax,eax ;xor eax,eax
;mov ax,cs ;On récupère le segment et l'offset puis en renvoie l'adresse physique ;mov ax,cs ;On récupère le segment et l'offset puis en renvoie l'adresse physique
;shl eax,4 ;de l'erreur. ;shl eax,4 ;de l'erreur.
;add ax,cs:current ;add ax,cs:current
jmp endofint ;on termine l'int jmp endofscan ;on termine l'int
noerror: noerror:
and byte ptr [bp+6],0FEh;Si pas d'erreur on efface le Bit CARRY du FLAG qui sera dépilé lors du IRET and byte ptr [bp+6],0FEh;Si pas d'erreur on efface le Bit CARRY du FLAG qui sera dépilé lors du IRET
endofscan:
popf
jne noequal
or byte ptr [bp+6],1000000b
jmp endofint
noequal:
and byte ptr [bp+6],0BFh
endofint: endofint:
pop bp pop bp
sti ;On réactive les interruptions logiciellement sti ;On réactive les interruptions logiciellement
@ -53,7 +61,7 @@ endofint:
current dw 0 ;Mot temporaire qui contient l'adresse de la fonction appelée current dw 0 ;Mot temporaire qui contient l'adresse de la fonction appelée
tables dw readsector tables dw readsector
dw writesector dw writesector
dw verifysector2 dw verifysector
dw initdrive dw initdrive
dw loadfile dw loadfile
dw compressrle dw compressrle
@ -901,13 +909,6 @@ invert:
pop cx si pop cx si
ret ret
VerifySector2:
call verifysector
jne nook
or byte ptr [bp+6],10b
nook:
ret
;=============DecompressRle (Fonction 05H)============== ;=============DecompressRle (Fonction 05H)==============
;decompress ds:si en es:di taille bp dcompress cx compress ;decompress ds:si en es:di taille bp dcompress cx compress
;-> AH=5 ;-> AH=5