Changeset 259 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers


Ignore:
Timestamp:
Feb 23, 2012, 7:14:06 AM (12 years ago)
Author:
gregli@…
google:author:
gregli@hotmail.com
Message:

For function int13/0h, restored the code to only reset the floppy drives if a floppy drive was passed in for reset. Other minor optimizations. Better create new floppy support in Serial Server.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH0h_HReset.asm

    r258 r259  
    2222    eMOVZX  bx, dl                      ; Copy requested drive to BL, zero BH to assume no errors
    2323    call    ResetFloppyDrivesWithInt40h
     24
     25%ifdef MODULE_SERIAL_FLOPPY
     26;
     27; "Reset" emulatd serial floppy drives, if any.  There is nothing to actually do for this reset,
     28; but record the proper error return code if one of these floppy drives is the drive requested.
     29;
     30    call    RamVars_UnpackFlopCntAndFirstToAL
     31    cbw                                                 ; Clears AH (there are flop drives) or ffh (there are not)
     32                                                        ; Either AH has success code (flop drives are present)
     33                                                        ; or it doesn't matter because we won't match drive ffh
     34
     35    cwd                                                 ; clears DX (there are flop drives) or ffffh (there are not)
     36
     37    adc     dl, al                                      ; second drive (CF set) if present
     38                                                        ; If no drive is present, this will result in ffh which
     39                                                        ; won't match a drive
     40    call    BackupErrorCodeFromTheRequestedDriveToBH
     41    mov     dl, al                                      ; We may end up doing the first drive twice (if there is
     42    call    BackupErrorCodeFromTheRequestedDriveToBH    ; only one drive), but doing it again is not harmful.
     43%endif
     44
     45    test    bl, bl                                      ; If we were called with a floppy disk, then we are done,
     46    jns     SHORT .SkipHardDiskReset                    ; don't do hard disks.
     47       
    2448    call    ResetForeignHardDisks
    2549    call    AH0h_ResetHardDisksHandledByOurBIOS
     
    129153    jb      SHORT .DriveResetLoop       ;  If not, reset next drive
    130154.AllDrivesReset:
    131 %ifdef MODULE_SERIAL_FLOPPY
    132 ;
    133 ; "Reset" emulatd serial floppy drives, if any.  There is nothing to actually do for this reset,
    134 ; but record the proper error return code if one of these floppy drives is the drive requested.
    135 ;
    136     call    RamVars_UnpackFlopCntAndFirstToAL
    137 
    138     cbw                                                 ; Clears AH (there are flop drives) or ffh (there are not)
    139                                                         ; Either AH has success code (flop drives are present)
    140                                                         ; or it doesn't matter because we won't match drive ffh
    141 
    142     cwd                                                 ; clears DX (there are flop drives) or ffffh (there are not)
    143 
    144     adc     dl, al                                      ; second drive (CF set) if present
    145                                                         ; If no drive is present, this will result in ffh which
    146                                                         ; won't match a drive
    147     call    BackupErrorCodeFromTheRequestedDriveToBH
    148     mov     dl, al                                      ; We may end up doing the first drive twice (if there is
    149     jmp     BackupErrorCodeFromTheRequestedDriveToBH    ; only one drive), but doing it again is not harmful.
    150 %else
    151     ret
    152 %endif
    153        
     155    ret
     156
     157               
    154158;--------------------------------------------------------------------
    155159; .BackupErrorCodeFromMasterOrSlaveToBH
Note: See TracChangeset for help on using the changeset viewer.