Hi!

Part three:

- small code clean and tune.

--- Begin Message ---
diff -ruNp old/drivers/floppy.asm new/drivers/floppy.asm
--- old/drivers/floppy.asm      2004-06-08 20:10:34.000000000 +0000
+++ new/drivers/floppy.asm      2004-06-08 20:35:36.000000000 +0000
@@ -54,7 +54,7 @@ FL_RESET:
 ; int ASMPASCAL fl_diskchanged(UBYTE drive);
 ;
 ; Read disk change line status.
-; returns 1 if disk has changed, 0 if not, 0xFFFF if error.
+; returns 1 if disk has changed, 0 if not, 0xFF if error.
 ;
 
                global  FL_DISKCHANGED
@@ -67,18 +67,14 @@ FL_DISKCHANGED:
                 mov     ah,16h          ;  read change status type
                xor     si,si           ; RBIL: avoid crash on AT&T 6300
                 int     13h
+               pop     si
 
-               mov     al,1
-                jnc    fl_dc_ret1      ; cy==1 is error or disk has changed
-
-               cmp     ah,6            ; ah=6: disk has changed
-               je      fl_dc_ret
-               dec     ax              ; 0xFF on error
-
-fl_dc_ret1:    dec     ax
-fl_dc_ret:     cbw
-                pop    si
-                ret
+               sbb     al,al           ; CF=0 (disk has not changed)
+               jnc     ret_AH_0        ; ...return 0
+               cmp     ah,6            ; ah!=6 (error)
+               jne     ret_AH_0        ; ...return 0xFF
+               mov     al,1            ; ah=6 (disk has changed)
+               jmp     short ret_AH_0  ; ...return 1
 
 ;
 ; int ASMPASCAL fl_read  (UBYTE drive, WORD head, WORD track, WORD sector, WORD 
count, void FAR *buffer);
@@ -172,7 +168,8 @@ FL_LBA_READWRITE:
 ;
 
                global  FL_READKEY
-FL_READKEY:     xor    ah, ah
+FL_READKEY:
+               mov     ah,0
                int     16h
                ret
 
@@ -190,6 +187,7 @@ FL_SETDISKTYPE:
                 int     13h
 ret_AH:
                mov     al,ah           ; place error code into al
+ret_AH_0:
                mov     ah,0
                ret
 

--- End Message ---

Reply via email to