From 2dbdb9c4c8e95b8b95859f9dd436960b1d44d555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Tue, 23 Nov 2004 20:37:41 +0000 Subject: [PATCH] fix: correction d'un bogue dans la fonction verifysector et prise en compte du flag equal a la sortie du pilote --- noyau/disque.asm | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/noyau/disque.asm b/noyau/disque.asm index 145ef2b..1431647 100644 --- a/noyau/disque.asm +++ b/noyau/disque.asm @@ -36,15 +36,23 @@ noerrorint: itsok: push bp 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 ;xor eax,eax ;mov ax,cs ;On récupère le segment et l'offset puis en renvoie l'adresse physique ;shl eax,4 ;de l'erreur. ;add ax,cs:current - jmp endofint ;on termine l'int + jmp endofscan ;on termine l'int 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 +endofscan: + popf + jne noequal + or byte ptr [bp+6],1000000b + jmp endofint +noequal: + and byte ptr [bp+6],0BFh endofint: pop bp 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 tables dw readsector dw writesector - dw verifysector2 + dw verifysector dw initdrive dw loadfile dw compressrle @@ -901,13 +909,6 @@ invert: pop cx si ret -VerifySector2: - call verifysector - jne nook - or byte ptr [bp+6],10b -nook: - ret - ;=============DecompressRle (Fonction 05H)============== ;decompress ds:si en es:di taille bp d‚compress‚ cx compress‚ ;-> AH=5